使用的命名空間如下
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