前提・実現したいこと
1週間くらい前から、Unityで音楽ゲームを製作したくて勉強を始めました。その音楽ゲームでは、譜面のデータをjson形式で扱おうと考えています。
jsonファイルに書かれた値がインスタンスへ反映されたかどうかを調べるため、Debug.Logで表示しようと試みたところ、下記のようなエラーが出てしまいました。
下に示すコードを修正して、インスタンスへ値を反映し、「fumen.name」や「fumen.block」というふうに値をその後の処理で利用したいです。
発生している問題・エラーメッセージ
'MusicDTM'に'name'の定義が含まれておらず、型'MusicDTO'の最初の引数を受け付けるアクセス可能な拡張メソッド'name'が見つかりませんでした。usingディレクティブまたはアセンブリ参照が不足していないかを確認してください。
該当のソースコード
jsonファイルを読み込むために用意したクラスを下に示します。
C#
1//MusicDTM.cs 2using System.Collections.Generic; 3 4namespace NoteEditor.DTO 5{ 6 public class MusicDTO 7 { 8 [System.Serializable] 9 public class EditData 10 { 11 public string name; 12 public int maxBlock; 13 public int BPM; 14 public int offset; 15 public List<Note> notes; 16 } 17 18 [System.Serializable] 19 public class Note 20 { 21 public int LPB; 22 public int num; 23 public int block; 24 public int type; 25 public List<Note> notes; 26 } 27 } 28}
エラーが出ているコードを下に示します。FilePathには、インスペクターから譜面のjsonファイルのパスを入力します。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using NoteEditor.DTO; 5 6public class NoteGenerator : MonoBehaviour 7{ 8 public string FilePath; 9 10 void Start() 11 { 12 MusicDTO fumen = JsonUtility.FromJson<MusicDTO>(FilePath); 13 Debug.Log("name" + fumen.name); 14 } 15 16 void Update() 17 { 18 } 19} 20
以下は、jsonファイルの例です。
json
1{ 2"name":"sample", 3"maxBlock":8, 4"BPM":200, 5"offset":3100, 6"notes":[ 7 {"LPB":4,"num":24,"block":1,"type":1,"notes":[]}, 8 {"LPB":4,"num":32,"block":1,"type":1,"notes":[]}, 9 {"LPB":4,"num":40,"block":1,"type":1,"notes":[]}, 10 ] 11}
試したこと
JsonUtilityのスクリプトリファレンス https://docs.unity3d.com/jp/current/ScriptReference/JsonUtility.html
を読んだり、エラーメッセージの一部で検索をかけてみましたが、どう修正すればよいのか分かりませんでした。
備考
下記のURLの記事を参考にしており、1番目に示したコードはここで紹介されている「NoteEditor」に同梱されているものです。
https://qiita.com/irigoma77/items/ee15b3e748596aa6d086
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。