回答編集履歴

1

コメントへの返答追記

2016/10/10 10:53

投稿

sakura_hana
sakura_hana

スコア11427

test CHANGED
@@ -29,3 +29,203 @@
29
29
  ちなみに現状だと、クラスで宣言したtext変数にはStartでInstantiateされたオブジェクトのテキストが入っています。
30
30
 
31
31
  修正後は「foreachで最後に作ったitemのTextコンポーネント」が入ります。
32
+
33
+
34
+
35
+ ---
36
+
37
+
38
+
39
+ ■複数のTextを扱う場合(コメント返答)
40
+
41
+ 何がわからないのかわからないですが(配列の使い方は参考サイトに書いてある通りなので)……
42
+
43
+ 「配列という概念自体がよくわからない」ということなら、「変数 配列」とかでググって頂ければ幸いです。
44
+
45
+ 一応私が作るならこんな感じかな?というコードを載せます。変更箇所には「変更」とコメントを付けています。
46
+
47
+ ```C#
48
+
49
+ using UnityEngine;
50
+
51
+ using System.Collections;
52
+
53
+ using MiniJSON;
54
+
55
+ using UnityEngine.UI;
56
+
57
+ using UnityEngine.SceneManagement;
58
+
59
+
60
+
61
+ public class timer : MonoBehaviour
62
+
63
+ {
64
+
65
+
66
+
67
+ [SerializeField]
68
+
69
+ RectTransform prefab = null;
70
+
71
+
72
+
73
+ Text[] text; //変更:要素数固定なのでtype[]型にしました
74
+
75
+ public float Timer = 10;
76
+
77
+
78
+
79
+ void Start()
80
+
81
+ {
82
+
83
+ StartCoroutine(Connect());
84
+
85
+ /* 変更(不要なのでコメントアウト)
86
+
87
+ var item = GameObject.Instantiate(prefab) as RectTransform;
88
+
89
+ item.SetParent(transform, false);
90
+
91
+ text = item.Find("text").GetComponentInChildren<Text>();
92
+
93
+ */
94
+
95
+ }
96
+
97
+
98
+
99
+ IEnumerator Connect()
100
+
101
+ {
102
+
103
+ // webサーバへアクセス
104
+
105
+ WWW www = new WWW("http://~~~.php");
106
+
107
+ // webサーバから何らかの返答があるまで停止
108
+
109
+ yield return www;
110
+
111
+ Debug.Log(www.text); //phpからJSONが送られてきているかどうかの確認
112
+
113
+
114
+
115
+ // もし、何らかのエラーがあったら
116
+
117
+ if (!string.IsNullOrEmpty(www.error))
118
+
119
+ {
120
+
121
+ // エラー内容を表示
122
+
123
+ Debug.LogError(string.Format("Fail Whale!\n{0}", www.error));
124
+
125
+ yield break; // コルーチンを終了
126
+
127
+ }
128
+
129
+
130
+
131
+ string json = www.text;
132
+
133
+
134
+
135
+ IList List = (IList)Json.Deserialize(json);
136
+
137
+
138
+
139
+ string s;
140
+
141
+ s = "\r\n";//改行コード
142
+
143
+
144
+
145
+ text = new Text[List.count]; //変更(追記):Textリストを初期化する
146
+
147
+ int id = 0; //変更(追記):配列に収める為のIDを用意する
148
+
149
+
150
+
151
+ foreach (IDictionary list in List)
152
+
153
+ {
154
+
155
+ string maru = (string)list["maru"];
156
+
157
+ string batu = (string)list["batu"];
158
+
159
+
160
+
161
+ var item = GameObject.Instantiate(prefab) as RectTransform;
162
+
163
+ item.SetParent(transform, false);
164
+
165
+ var maru = item.Find("maru").GetComponentInChildren<Text>();
166
+
167
+ var batu = item.Find("batu").GetComponentInChildren<Text>();
168
+
169
+ text[id] = item.Find("text").GetComponentInChildren<Text>(); //変更:配列にTextコンポーネントを入れる
170
+
171
+
172
+
173
+ maru.text = "○ =" + maru.ToString() + "個";
174
+
175
+ batu.text = "× =" + batu.ToString() + "個";
176
+
177
+
178
+
179
+ text[id].text = "A"; //変更:文章を指定する
180
+
181
+
182
+
183
+ id++; //変更(追記):配列に収める為のIDを用意する
184
+
185
+ }
186
+
187
+
188
+
189
+ }
190
+
191
+
192
+
193
+
194
+
195
+ // Update is called once per frame
196
+
197
+ void Update()
198
+
199
+ {
200
+
201
+ Timer -= Time.deltaTime;
202
+
203
+ // マイナス値にならないようにしている
204
+
205
+ Timer = Mathf.Max(Timer, 0);
206
+
207
+ if (Timer == 0)
208
+
209
+ {
210
+
211
+ text[0].text = "B"; //変更:配列0番に入っているTextコンポーネントの中身書き換え
212
+
213
+ text[1].text = "C"; //変更:配列1番に入っているTextコンポーネントの中身書き換え(使用例)
214
+
215
+ Timer =10;
216
+
217
+ }
218
+
219
+
220
+
221
+ }
222
+
223
+ }
224
+
225
+ ```
226
+
227
+ 正直配列を覚えないとJSONを使ったシステムの作成は非常に困難だと思います。
228
+
229
+ (というかJSONをデシリアライズしたListが既に配列なんですけどね……)
230
+
231
+ これを機に覚えると今後の開発が楽になるかと思います。