質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3984閲覧

Unity Addressable Asset Systemを使用しローカルでJsonを読み込みたい

moon_peta

総合スコア1

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/05/23 05:27

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。
自分のやりたいことを整理したところ、自分のやりたいことは
Unityさんが推奨していない、Resources.Loadを使用せずにJsonを読み込むことでしたので、
下記の記事を参考にし、StreamingAssetsからJsonを読み込むようにしました。

https://t-tutiya.hatenablog.com/entry/2019/06/29/222555

質問を読んでいただいた方々、ありがとうございました。

投稿2020/05/28 13:08

moon_peta

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問