使用的命名空间如下
using LitJson;using System.Collections.Generic;using System.IO;using System.Text;using UnityEngine;using UnityEngine.Networking;
1、通过UnityWebRequest获取本地StreamingAssets文件夹中的Json文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
///
/// 通过UnityWebRequest获取本地StreamingAssets文件夹中的Json文件
///
/// 文件名称
///
public string UnityWebRequestJsonString(string fileName)
{
string url;
#region 分平台判断 StreamingAssets 路径
//如果在编译器 或者 单机中 ……
#if UNITY_EDITOR || UNITY_STANDALONE
url = "file://" + Application.dataPath + "/StreamingAssets/" + fileName;
//否则如果在Iphone下……
#elif UNITY_IPHONE
url = "file://" + Application.dataPath + "/Raw/"+ fileName;
//否则如果在android下……
#elif UNITY_ANDROID
url = "jar:file://" + Application.dataPath + "!/assets/"+ fileName;
#endif
#endregion
UnityWebRequest request = UnityWebRequest.Get(url);
request.SendWebRequest();//读取数据
while (true)
{
if (request.downloadHandler.isDone)//是否读取完数据
{
return request.downloadHandler.text;
}
}
}
```
2、通过UnityWebRequest和StreamReader读取本地StreamingAssets文件夹中的Json文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 ///
2 /// 通过UnityWebRequest和StreamReader读取本地StreamingAssets文件夹中的Json文件
3 ///
4 /// json文件名
5 ///
6 public string StreamReaderJsonFromSSPath(string jsonName)
7 {
8 string url;
9 #region 分平台判断 StreamingAssets 路径
10 //如果在编译器 或者 单机中 ……
11 #if UNITY_EDITOR || UNITY_STANDALONE
12 url = Application.dataPath + "/StreamingAssets/" + jsonName;
13 //否则如果在Iphone下……
14 #elif UNITY_IPHONE
15
16 url = Application.dataPath + "/Raw/"+ fileName;
17 //否则如果在android下……
18 #elif UNITY_ANDROID
19 url = Application.dataPath + "!/assets/"+ fileName;
20 #endif
21 #endregion
22 UnityWebRequest webRequest = UnityWebRequest.Get(url);
23 webRequest.SendWebRequest();//读取数据
24 while (true)
25 {
26 if (webRequest.isNetworkError)
27 {
28 Debug.LogError(url + "请求错误:" + webRequest.error);
29 }
30 else
31 {
32 if (webRequest.downloadHandler.isDone)//是否读取完数据
33 {
34 //读取
35 Encoding endoning = Encoding.GetEncoding("utf-8");//识别Json数据内容中文字段
36 StreamReader streamReader = new StreamReader(url, endoning);
37 string str = streamReader.ReadToEnd();
38 streamReader.Close();
39 return str;
40 }
41 }
42 }
43 }
3、通过StreamReader读取本地StreamingAssets文件夹中的Json文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
///
/// 通过UnityWebRequest获取本地StreamingAssets文件夹中的Json文件
///
/// 文件名称
///
public string UnityWebRequestJsonString(string fileName)
{
string url;
#region 分平台判断 StreamingAssets 路径
//如果在编译器 或者 单机中 ……
#if UNITY_EDITOR || UNITY_STANDALONE
url = "file://" + Application.dataPath + "/StreamingAssets/" + fileName;
//否则如果在Iphone下……
#elif UNITY_IPHONE
url = "file://" + Application.dataPath + "/Raw/"+ fileName;
//否则如果在android下……
#elif UNITY_ANDROID
url = "jar:file://" + Application.dataPath + "!/assets/"+ fileName;
#endif
#endregion
UnityWebRequest request = UnityWebRequest.Get(url);
request.SendWebRequest();//读取数据
while (true)
{
if (request.downloadHandler.isDone)//是否读取完数据
{
return request.downloadHandler.text;
}
}
}
```
4、通过FileStream读取本地StreamingAssets文件夹中的文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
///
/// 通过FileStream读取本地StreamingAssets文件夹中的文件
///
///
///
public string GetAllFileInfos(string jsonName)
{
string jsonPath = Application.streamingAssetsPath + "/" + jsonName;
try
{
using (FileStream fs = new FileStream(jsonPath, FileMode.Open, FileAccess.Read))
{
fs.Seek(0, SeekOrigin.Begin);
var bytes = new byte[fs.Length];
fs.Read(bytes, 0, (int)fs.Length);
string jsonData = Encoding.UTF8.GetString(bytes);
fs.Flush();
fs.Dispose();
fs.Close();
return jsonData;
}
//Debug.Log("所有文件资源信息Assets下文件夹数量:" + fileInfos.Count);
}
catch (Exception e)
{
Debug.LogError(e.Message);
Debug.LogError("文件读取异常:" + jsonPath);
return string.Empty;
}
}
参考资源:https://www.cnblogs.com/unity3ds/p/11742487.html](https://www.cnblogs.com/unity3ds/p/11742487.html
转载链接:https://blog.csdn.net/U3DCoder/article/details/115464140
Unity中常用的几种读取本地文件方式的更多相关文章
C#中常用的几种读取XML文件的方法
1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/
web 中常用的两种上传文件的方法总结
这里我们来总结整理一下常用的两种文件上传方式以及要注意的东西: 1.springmvc .MultipartFile 的上传方式. 2.org.apache.commons.fileupload 使用 ...
【转】flash air中读取本地文件的三种方法
actionscript中读取本地文件操作有两种代码如下 1.使用File和FileStream两个类,FileStream负责读取数据的所以操作:(同步操作) var stream:FileStre ...
【原】实时渲染中常用的几种Rendering Path
[原]实时渲染中常用的几种Rendering Path 本文转载请注明出处 —— polobymulberry-博客园 本文为我的图形学大作业的论文部分,介绍了一些Rendering Path,比较简 ...
【转载】Python编程中常用的12种基础知识总结
Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...
Python编程中常用的12种基础知识总结
原地址:http://blog.jobbole.com/48541/ Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时 ...
本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop、Storm以及Spark。
本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop.Storm以及Spark. 当前的高性能PC机.中型机等机器在处理海量数据时,其计算能力.内存容量等指标都远远无法达到要求.在大数 ...
.NET中常用的几种解析JSON方法
一.基本概念 json是什么? JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是一种轻量级的数据交换格式,是存储和交换文本信息的语法. ...
iOS中常用的四种数据持久化方法简介
iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...
python中常用的九种数据预处理方法分享
Spyder Ctrl + 4/5: 块注释/块反注释 本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(St ...
随机推荐
uni-app初使用
关于样式 rpx(responsive pixel): 可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = ...
解决在Android studio的Button控件下background背景设置不起作用的问题
Button控件默认的背景是深紫色的,有时候会看不清按钮上的文本,显得很不方便,想要修改背景色所以添加了background字段,但是又不起作用!!! 1.找到values文件夹下面的themes文件 ...
VP做弹出窗体:查询数据并回传
1.父页面VP定义传递数据:VP属性:DataContractMembrs 传递参数1:销售订单,用于给到子页面 传递参数2:表格行,用户子页面回传回来父页面(定义为None,通过代码来写进父页面表格 ...
读后笔记 -- Java核心技术(第11版 卷 II) Chapter5 数据库编程
5.1 JDBC API 1. JDBC (Java Database Connectivity) is an API for interacting with a database in Java. ...
查找数组中某个元素出现的次数,例如数组arr=[1,2,3,4,3,4,5,3]中target=3出现的次数
1 function(arr,target) { 2 3 let num = 0 4 5 arr.forEach((item, index) => { 6 7 if (item===target ...
C#中DataTable新增列、删除列、更改列名、交换列位置
一.新增列 1.1.新增列 /*新增列*/ dataTable.Columns.Add("列名称", Type.GetType("数据类型")); /*比如添加 ...
如何使用css绘制三角形
背景 用迪卡侬官方主页进行页面练习,发现头部导航栏需要使用到梯形 分析 图形分解 通过图片我们可以发现该梯形可以分解成一个长方形和一个直角三角形,长方形:110*65:直角三角形:11*65(底边*另 ...
vue iframe网页内嵌及传参
思路 通过域名传参做并加密处理 内嵌页面通过域名来接收参数并解密 外套页面 |