teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

タイトルの変更,本文の追記修正,コードの追加

2020/05/09 02:50

投稿

tuna-uniko
tuna-uniko

スコア10

title CHANGED
@@ -1,1 +1,1 @@
1
- ボタンを押したタイミングを配列で記録し、Jsonファイルとして出力した
1
+ ボタンを押したタイミングを記録した配列が、Jsonファイル出力されな
body CHANGED
@@ -1,12 +1,15 @@
1
- 以下のコードを使用し、ボタンを押したタイミングを配列化しJsonファイル書き込み、出力行うシステムを作成しているのですが、どうもJsonファイルへ出力する時配列内の数字が読み込めてないような挙動をししまいます。
2
- 以下のコードではOnClick()でtapのタグが付いたボタンを押すたびに配列内へそのタイミングを記録し、配列の大きさを1つ大きくることをしています。そしてFinishのタグが付いたボタンを押すとタイミングが配列されたJsonファイルが出力される仕組みです。しし出力したところ以下の結果になりました。
1
+ Jsonに配列を出力する方法について質問です。
2
+ 以下のコードではOnClick()でtapのタグが付いたボタンを押すたびに配列内へそのタイミングを記録し、配列の大きさを1つ増やリサイズの処理をしています。そしてFinishのタグが付いたボタンを押すとタイミングが"soundscore"に配列形式で記録されたJsonファイルが出力される仕組みです。これを譜面データとて利用たいのですが、試しに31回tapボタンを押してから出力したところ以下の結果になりました。
3
3
  ```Json
4
4
  {"soundscore":[0.0,0.0]}
5
5
  ```
6
- このため確認用にfor文利用し、配列入っている数値をコンソール表示させたところ初期化に使用した数字しか出力され配列soundscore[]に数値が正しく入っていないのではないかと考えています。
6
+ 何度か修正繰り返たところMakerクラス内で宣言した配列soundscore[2]が値が入っていない状態そのままで書き出しに使用され、mk.soundscore[i]そのものを参照できていないのではないかという考えにたどり着きした。そこで、i回分クリックしたタイミングのデータを格納したmk.soundscore[i]のデータをどのような処理を使えばJsonファイルへ書き出せるか知りたいです。
7
7
 
8
8
  目指していること
9
- Jsonファイルを出力した時、ボタンを押したタイミングが回数分きちんと配列として書き出されている状態
9
+ Jsonファイルを出力した時、ボタンを押したタイミングが回数分きちんとファイル内に反映される(以下の状態が理想の力で、mk.soundscore[0]などにそれぞれ格納されているfloat型の数値が入ります)
10
+ ```Json
11
+ {"soundscore":[mk.soundscore[0],mk.soundscore[1]・・・mk.soundscore[i]]}
12
+ ```
10
13
 
11
14
  ```C#
12
15
  using UnityEngine;
@@ -63,6 +66,7 @@
63
66
  //Jsonファイルで出力
64
67
  string json = JsonUtility.ToJson(mk);
65
68
  File.WriteAllText("Assets\testj", json);
69
+ //読み込みの確認用 start()内で指定した数値しか返らない
66
70
  int u;
67
71
  for (u = 0; u < i; u++)
68
72
  {
@@ -77,8 +81,4 @@
77
81
  ー>こちらのサイト様にあるソースコードの一部分たちを試行錯誤して組み込んだものが上のコードになります。
78
82
 
79
83
  使用環境
80
- Unity2019,1,5f1 C#のみ使用しています
84
+ Unity2019,1,5f1 C#のみ使用しています
81
-
82
- その他
83
- ボタンを押したときにはコンソールにタイミングがきちんと出力されています。
84
- 上の方で配列の大きさを指定していますが、こうしないと「配列の中身空っぽやで」とエラーが出てしまうためです。