Jsonに配列を出力する方法について質問です。
以下のコードではOnClick()でtapのタグが付いたボタンを押すたびに配列内へそのタイミングを記録し、配列の大きさを1つ増やすリサイズの処理をしています。そしてFinishのタグが付いたボタンを押すとタイミングが"soundscore"に配列形式で記録されたJsonファイルが出力される仕組みです。これを譜面データとして利用したいのですが、試しに31回tapボタンを押してから出力したところ以下の結果になりました。
Json
1{"soundscore":[0.0,0.0]}
何度か修正を繰り返したところ、Makerクラス内で宣言した配列soundscore[2]が値が入っていない状態そのままで書き出しに使用され、mk.soundscore[i]そのものを参照できていないのではないかという考えにたどり着きました。そこで、i回分クリックしたタイミングのデータを格納したmk.soundscore[i]のデータをどのような処理を使えばJsonファイルへ書き出せるか知りたいです。
目指していること
Jsonファイルを出力した時、ボタンを押したタイミングが回数分きちんとファイル内に反映される(以下の状態が理想の出力で、mk.soundscore[0]などにそれぞれ格納されているfloat型の数値が入ります)
Json
1{"soundscore":[mk.soundscore[0],mk.soundscore[1]・・・mk.soundscore[i]]}
C#
1using UnityEngine; 2using System.IO; 3using System; 4using UnityEngine.UI; 5 6[Serializable] 7public class Maker 8{ 9 public float[] soundscore = new float[2]; 10 //public int[] Notekind; 11} 12 13public class timing : MonoBehaviour 14{ 15 16 float TimeCount = 0; 17 //インスタンス作成 18 Maker mk = new Maker(); 19 public GameObject ko; 20 public GameObject lp; 21 int i=1; 22 23 // Start is called before the first frame update 24 void Start() 25 { 26 // 配列を初期化 27 mk.soundscore[0] = 0; 28 ko = GameObject.FindWithTag("tap"); 29 lp = GameObject.FindWithTag("Finish"); 30 } 31 32 // Update is called once per frame 33 void Update() 34 { 35 //開始からの時間を計測 36 TimeCount += Time.deltaTime; 37 } 38 39 public void OnClick() 40 { 41 if (tag == "tap") 42 { 43 //ボタンを押したタイミングを記録し、配列の要素数を増やしつつ 44 //配列に代入 45 mk.soundscore[i] = TimeCount; 46 Array.Resize(ref mk.soundscore, i + 1); 47 Debug.Log(mk.soundscore[i]); 48 } 49 50 if (tag == "Finish") 51 { 52 //Jsonファイルで出力 53 string json = JsonUtility.ToJson(mk); 54 File.WriteAllText("Assets\testj", json); 55 //読み込みの確認用 start()内で指定した数値しか返らない 56 int u; 57 for (u = 0; u < i; u++) 58 { 59 Debug.Log(mk.soundscore[u]); 60 } 61 } 62 } 63}
参考サイト様
https://sawalemounity.hatenablog.com/entry/2017/09/23/223000
ー>こちらのサイト様にあるソースコードの一部分たちを試行錯誤して組み込んだものが上のコードになります。
使用環境
Unity2019,1,5f1 C#のみ使用しています
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/11 06:04
2020/05/11 06:29
2020/05/11 06:55
2020/05/11 07:32
2020/05/11 07:52