使用的命名空间如下

using LitJson;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;

1、通过UnityWebRequest获取本地StreamingAssets文件夹中的Json文件

      /// <summary>
/// 通过UnityWebRequest获取本地StreamingAssets文件夹中的Json文件
/// </summary>
/// <param name="fileName">文件名称</param>
/// <returns></returns>
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文件

 1      /// <summary>
2 /// 通过UnityWebRequest和StreamReader读取本地StreamingAssets文件夹中的Json文件
3 /// </summary>
4 /// <param name="jsonName">json文件名</param>
5 /// <returns></returns>
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文件

      /// <summary>
/// 通过UnityWebRequest获取本地StreamingAssets文件夹中的Json文件
/// </summary>
/// <param name="fileName">文件名称</param>
/// <returns></returns>
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文件夹中的文件

    /// <summary>
/// 通过FileStream读取本地StreamingAssets文件夹中的文件
/// </summary>
/// <param name="jsonName"></param>
/// <returns></returns>
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中常用的几种读取本地文件方式的更多相关文章

  1. C#中常用的几种读取XML文件的方法

    1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/

  2. web 中常用的两种上传文件的方法总结

    这里我们来总结整理一下常用的两种文件上传方式以及要注意的东西: 1.springmvc .MultipartFile 的上传方式. 2.org.apache.commons.fileupload 使用 ...

  3. 【转】flash air中读取本地文件的三种方法

    actionscript中读取本地文件操作有两种代码如下 1.使用File和FileStream两个类,FileStream负责读取数据的所以操作:(同步操作) var stream:FileStre ...

  4. 【原】实时渲染中常用的几种Rendering Path

    [原]实时渲染中常用的几种Rendering Path 本文转载请注明出处 —— polobymulberry-博客园 本文为我的图形学大作业的论文部分,介绍了一些Rendering Path,比较简 ...

  5. 【转载】Python编程中常用的12种基础知识总结

    Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  6. Python编程中常用的12种基础知识总结

    原地址:http://blog.jobbole.com/48541/ Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时 ...

  7. 本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop、Storm以及Spark。

    本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop.Storm以及Spark. 当前的高性能PC机.中型机等机器在处理海量数据时,其计算能力.内存容量等指标都远远无法达到要求.在大数 ...

  8. .NET中常用的几种解析JSON方法

    一.基本概念 json是什么? JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是一种轻量级的数据交换格式,是存储和交换文本信息的语法. ...

  9. iOS中常用的四种数据持久化方法简介

    iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 ...

  10. python中常用的九种数据预处理方法分享

    Spyder   Ctrl + 4/5: 块注释/块反注释 本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(St ...

随机推荐

  1. temp_laijx_2023

    ############################ [{\"itemKey\": \"jenkinsConfig\",\"itemValue\& ...

  2. CH32V00+WS2812制作音乐谱显示

    CH32V003,自带运放.SPI.PWM等外设模块,关键还便宜,便宜,便宜! 可以尝试来实现一个低成本的音乐谱显示. 1. 硬件设计 显示方面,使用64颗ws2812组成8*8的显示阵列,通过 CH ...

  3. Elasticsearch 实战

    需求 假设现在有这么一个需求,系统接了很多的报文,需要提供全文检索,为了简化,报文目前只有类型,流水号,内容这三个字段. 索引设计 建立msg索引,映射规则如下 PUT /msg { "ma ...

  4. 牛客java基础语法在线编程-知识点小结(待完善)

    知识点小结 一.输入输出 Scanner类 Scanner类在java.util包下,导包格式如下: import java.util.Scanner; 使用示例: import java.util. ...

  5. C++内存泄漏——原因、避免以及定位

    https://bbs.huaweicloud.com/blogs/351858

  6. Mac 安装nvm

    根据命令安装 nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash 当前窗口执行nv ...

  7. uniapp全局黑白

    page{filter: grayscale(100%); } .uni-tabbar__item{filter: grayscale(100%); }

  8. Java 分布式锁实现的一些实践

    近期换工作,闲下来有点时间写点东西,在这里分享一些心得体会 背景:我们在做后端开发时,无法避免的会遇到一些一致性问题,有时候我们前端的小伙伴或者rpc接口的调用方,在很短的时间间隔内给我们相同的请求, ...

  9. css布局、动画要点

    background属性 属性解释background属性是css中应用比较多,且比较重要的一个属性,它是负责给盒子设置背景图片和背景颜色的,background是一个复合属性,它可以分解成如下几个设 ...

  10. VS不能生成moc_XXX文件的问题解决

    环境:VS2010 + QT 4.8 问题:写好QT代码文件(XXX.h和XXX.cpp)后,发现不能像其它QT文件那样自动生成moc_XXX文件. 解决: 1.参考网文,将XXX.h文件的属性配置成 ...