close

參考

 

主要是使用 JsonUtility.FromJson 方法

先定義好讀出來之後的 Class

string dataAsJson = File.ReadAllText(filePath);
你定義的 Class 的 instense = JsonUtility.FromJson<你定義的Class>(dataAsJson);

 

注意: 建立的類別上面要掛 [Serializable]

 

如果是在安卓上要使用 www.Send() 去讀 StreamingAssets 裡的設定檔

  1. IEnumerator LoadLocalizedText(string fileName)
  2.     {
  3.         localizedText = new Dictionary<string, string>();
  4.         string filePath;// = Path.Combine(Application.streamingAssetsPath, fileName);
  5.         filePath = Path.Combine(Application.streamingAssetsPath + "/", fileName);
  6.         string dataAsJson;
  7.         if (filePath.Contains("://") || filePath.Contains(":///"))
  8.         {
  9.             debugText.text += System.Environment.NewLine + filePath;
  10.             UnityEngine.Networking.UnityWebRequest www = UnityEngine.Networking.UnityWebRequest.Get(filePath);
  11.             yield return www.Send();
  12.             dataAsJson = www.downloadHandler.text;
  13.         }
  14.         else
  15.         {
  16.             dataAsJson = File.ReadAllText(filePath);
  17.         }
  18.         LocalizationData loadedData = JsonUtility.FromJson<LocalizationData>(dataAsJson);
  19.  
  20.         for (int i = 0; i < loadedData.items.Length; i++)
  21.         {
  22.             localizedText.Add(loadedData.items[i].key, loadedData.items[i].value);
  23.         }
  24.         isReady = true;
  25.     }

參考 

設定檔要注意編碼 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);

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 kv4716213 的頭像
    kv4716213

    阿翔Unity筆記

    kv4716213 發表在 痞客邦 留言(0) 人氣()