前提・実現したいこと
UnityのAddressable Asset Systemを使用しローカルでJsonを読み込みたいのですが、parseエラーが発生します。
※サーバーの通信は行っておりません。
発生している問題・エラーメッセージ
ArgumentException: JSON parse error: Invalid value.
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class MstManager : MonoBehaviour 6{ 7 public List<JsonCard> JsonCardMaster() 8 { 9 string json = AssetLoader.instance.LoadJson("mst_card").ToString(); 10 Debug.Log("json = "+json); // json=System.Threading.Tasks.Task`1[UnityEngine.TextAsset] 11 // ↑ここで躓いています。 12 List<JsonCard> jsonCardList = JsonHelper.ListFromJson<JsonCard>(json); 13 return jsonCardList; 14 } 15}
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.AddressableAssets; 5using System.Threading.Tasks; 6 7public class AssetLoader : MonoBehaviour 8{ 9 public static AssetLoader instance; 10 11 void Awake() 12 { 13 if(instance == null){ 14 instance = this; 15 } 16 } 17 18 public async Task<TextAsset> LoadJson(string address) 19 { 20 var json = await Addressables.LoadAssetAsync<TextAsset>(address).Task; 21 if (json != null){ 22 Debug.Log("json = "+json); // ←コンソールでjsonが見られます。 23 return json; 24 } 25 26 return null; 27 } 28}
エラーが出ているのはJsonHelper.ListFromJson<JsonCard>(json)のほうなのですが、
public List<JsonCard> JsonCardMaster()の下記のコード
string json = AssetLoader.instance.LoadJson("mst_card").ToString();
これを
string json = Resources.Load<TextAsset>("Json/card").ToString();
にしていたころはjsonは読み込めておりました。
試したこと
前述のようにResources.Loadを使用していたころは読み込めていたので、jsonに問題はなさそうです。
コンソール上でjsonを確認。確認した結果はコードのコメントに記載しました。
補足情報(FW/ツールのバージョンなど)
Unity version 2019.3.0.0f5 Personal
Addressables version 1.8.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。