質問編集履歴

1

ソースの追加

2017/09/19 07:28

投稿

puika
puika

スコア8

test CHANGED
File without changes
test CHANGED
@@ -95,3 +95,209 @@
95
95
 
96
96
 
97
97
  よろしくお願いします。
98
+
99
+
100
+
101
+ *追記*
102
+
103
+ ご回答ありがとうございます。
104
+
105
+
106
+
107
+ whoesTurnに関係している箇所を挙げていきます。
108
+
109
+ Player.cs側
110
+
111
+ ```
112
+
113
+ using System.Collections;
114
+
115
+ using System.Collections.Generic;
116
+
117
+ using UnityEngine;
118
+
119
+ using System;
120
+
121
+
122
+
123
+ public class Player : MovingObject { //MonoBehaviourでないのは関係するでしょうか
124
+
125
+
126
+
127
+ [HideInInspector] public WT whoesTurn = WT.player;
128
+
129
+
130
+
131
+ private GameManager gmS;
132
+
133
+
134
+
135
+ private void Update () {
136
+
137
+ Debug.Log (whoesTurn); //ここは最初playerで、直後のif文が行われると以後startEnemyで変わらなくなります。
138
+
139
+ if (whoesTurn != WT.player)
140
+
141
+ return;
142
+
143
+
144
+
145
+ if (!key && transform.eulerAngles == new Vector3 (0f, 0f, rz)) {
146
+
147
+ AttemptMove (x, y, false);
148
+
149
+ }
150
+
151
+ }
152
+
153
+
154
+
155
+ protected override void AttemptMove (int xDir, int yDir, bool isEnemy)
156
+
157
+ {
158
+
159
+ base.AttemptMove (xDir, yDir, isEnemy);
160
+
161
+
162
+
163
+ ChangeTurn (WT.startEnemy);
164
+
165
+ }
166
+
167
+
168
+
169
+ public void WhoesTurn (WT a) //GameManager.csからの変更は全てこの関数で行います。
170
+
171
+ {
172
+
173
+ whoesTurn = a;
174
+
175
+ Debug.Log (whoesTurn); //ここの時点では変更されています。
176
+
177
+ }
178
+
179
+
180
+
181
+
182
+
183
+ void ChangeTurn (WT a) //Player.csからの変更は全てこの関数で行います。
184
+
185
+ {
186
+
187
+ whoesTurn = a;
188
+
189
+ gmS.WhoesTurn (a);
190
+
191
+ }
192
+
193
+ }
194
+
195
+ ```
196
+
197
+ GameManager.cs側
198
+
199
+ ```
200
+
201
+ using System.Collections;
202
+
203
+ using System.Collections.Generic;
204
+
205
+ using UnityEngine;
206
+
207
+ using System;
208
+
209
+
210
+
211
+ public enum WT {player, pmoving, startEnemy, moveEnemy, enemy, gameover}
212
+
213
+
214
+
215
+ public class GameManager : MonoBehaviour {
216
+
217
+
218
+
219
+ [HideInInspector] public WT whoesTurn = WT.player;
220
+
221
+
222
+
223
+ private Player pS;
224
+
225
+
226
+
227
+ void Update ()
228
+
229
+ {
230
+
231
+ if (whoesTurn == WT.startEnemy) { //ここはPlayer.csから変更できています。
232
+
233
+ StartCoroutine (MoveEnemies ());
234
+
235
+ }
236
+
237
+ }
238
+
239
+
240
+
241
+ IEnumerator MoveEnemies()
242
+
243
+ {
244
+
245
+ ChangeTurn (WT.moveEnemy);
246
+
247
+ yield return new WaitForSeconds(turnDelay);
248
+
249
+
250
+
251
+ ChangeTurn (WT.enemy);
252
+
253
+ yield return new WaitForSeconds(turnDelay);
254
+
255
+
256
+
257
+ ChangeTurn (WT.player);
258
+
259
+ }
260
+
261
+
262
+
263
+ public void WhoesTurn (WT a) //Player.csからの変更は全てこの関数で行います。
264
+
265
+ {
266
+
267
+ whoesTurn = a;
268
+
269
+ }
270
+
271
+
272
+
273
+ void ChangeTurn (WT a) //GameManager.csからの変更は全てこの関数で行います。
274
+
275
+ {
276
+
277
+ whoesTurn = a;
278
+
279
+ pS.WhoesTurn (a);
280
+
281
+ }
282
+
283
+ }
284
+
285
+
286
+
287
+ ```
288
+
289
+
290
+
291
+ このようになっております。
292
+
293
+ 私が見つけたPlayer.csからの変更とGameManager.csとの相違点は、
294
+
295
+ ・継承しているクラスが異なる。
296
+
297
+ ・GameManager.csからはCoroutine中で変更している。
298
+
299
+ の二点です。
300
+
301
+
302
+
303
+ 長くなってしまいましたが、どうぞよろしくお願いいたします。