close
主要是使用 JsonUtility.FromJson 方法
先定義好讀出來之後的 Class
string dataAsJson = File.ReadAllText(filePath);
你定義的 Class 的 instense = JsonUtility.FromJson<你定義的Class>(dataAsJson);
注意: 建立的類別上面要掛 []
如果是在安卓上要使用 www.Send() 去讀 StreamingAssets 裡的設定檔
-
IEnumerator LoadLocalizedText(string fileName)
-
{
-
string filePath;// = Path.Combine(Application.streamingAssetsPath, fileName);
-
filePath = Path.Combine(Application.streamingAssetsPath + "/", fileName);
-
string dataAsJson;
-
if (filePath.Contains("://") || filePath.Contains(":///"))
-
{
-
debugText.text += System.Environment.NewLine + filePath;
-
UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Get(filePath);
-
yield return www.Send();
-
dataAsJson = www.downloadHandler.text;
-
}
-
else
-
{
-
dataAsJson = File.ReadAllText(filePath);
-
}
-
LocalizationData loadedData = JsonUtility.FromJson<LocalizationData>(dataAsJson);
-
-
for (int i = 0; i < loadedData.items.Length; i++)
-
{
-
localizedText.Add(loadedData.items[i].key, loadedData.items[i].value);
-
}
-
isReady = true;
-
}
設定檔要注意編碼 UTF8 (檔首無BOM),否則 JSON 會 parse error,可以使用 notepad++檢查
後來更推薦使用NewtonSoft.JSON,因為預設的JsonUtility會有些多層結構的限制
可以在 unity 的 PackageManager 找到並安裝
using Newtonsoft.Json;
//自定義資料轉字串
string jsonstring = JsonConvert.SerializeObject(_facilityData);
//字串轉資料
FacilityData data = JsonConvert.DeserializeObject<FacilityData>(jsonString);
全站熱搜
留言列表