質問編集履歴

4

プログラムの修正

2021/12/10 07:41

投稿

nanakaka
nanakaka

スコア1

test CHANGED
File without changes
test CHANGED
@@ -6,11 +6,9 @@
6
6
 
7
7
  ### 発生している問題・エラーメッセージ
8
8
 
9
- タイトル画面からスタートし、通常にscene移動する分にはエラーは起きないのですが、一度タイトル画面に戻るときにDontDestroyOnLoadを削除し、もう一度スタートすると、移動先のscene下記のエラーが大量にでます。
9
+ タイトル画面からスタートし、通常にscene移動する分にはエラーは起きないのですが、一度タイトル画面に戻るときにDontDestroyOnLoadを削除し、もう一度スタートすると、scene移動した際に下記のようなエラーがいます。
10
-
11
-
12
-
13
- 一度削除してしまうともう使用できなくなってしまうのでしょうか?
10
+
11
+
14
12
 
15
13
  いろいろなサイトを調べてみたのですが見つからなかったので質問させていただきました。
16
14
 
@@ -58,6 +56,8 @@
58
56
 
59
57
  using UnityEngine;
60
58
 
59
+ using UnityEngine.SceneManagement;
60
+
61
61
 
62
62
 
63
63
  public class Object : MonoBehaviour
@@ -68,18 +68,18 @@
68
68
 
69
69
 
70
70
 
71
- public ProcessingUI ProUI;
72
-
73
-
74
-
75
- public bool titlecheck = false;
76
-
77
-
78
-
79
71
  void Awake()
80
72
 
81
73
  {
82
74
 
75
+
76
+
77
+
78
+
79
+ // スクリプトが設定されていなければゲームオブジェクトを残しつつスクリプトを設定
80
+
81
+
82
+
83
83
  if (singleton == null)
84
84
 
85
85
  {
@@ -90,6 +90,8 @@
90
90
 
91
91
  }
92
92
 
93
+ // このシーンの同じゲームオブジェクトを削除
94
+
93
95
  else
94
96
 
95
97
  {
@@ -98,8 +100,6 @@
98
100
 
99
101
  }
100
102
 
101
-
102
-
103
103
  }
104
104
 
105
105
 
@@ -108,7 +108,7 @@
108
108
 
109
109
  {
110
110
 
111
-
111
+
112
112
 
113
113
  }
114
114
 
@@ -120,9 +120,7 @@
120
120
 
121
121
  {
122
122
 
123
- titlecheck = ProUI.GetTitleCheck();
123
+ if (SceneManager.GetActiveScene().name == "TitleScene")
124
-
125
- if (titlecheck)
126
124
 
127
125
  {
128
126
 
@@ -132,61 +130,299 @@
132
130
 
133
131
  }
134
132
 
133
+
134
+
135
135
  }
136
136
 
137
137
 
138
138
 
139
+
140
+
139
141
  ```
140
142
 
141
143
 
142
144
 
145
+
146
+
143
- ###タイトル戻ったことを判定すスクリプト
147
+ ###エラー内記述されていDamageCheckSclipt
144
148
 
145
149
  ```
146
150
 
151
+ using System;
152
+
153
+ using System.Collections;
154
+
155
+ using System.Collections.Generic;
156
+
147
157
  using UnityEngine;
148
158
 
149
- using System.Collections;
150
-
151
159
  using UnityEngine.UI;
152
160
 
153
161
  using UnityEngine.SceneManagement;
154
162
 
155
163
 
156
164
 
157
- public class ProcessingUI : MonoBehaviour
165
+ public class DamageCheckSclipt : MonoBehaviour
158
166
 
159
167
  {
160
168
 
161
- public bool TitleCheck = false;
162
-
163
-
164
-
165
-
166
-
167
- public void LoadingTitleScene()
168
-
169
- {
170
-
171
- TitleCheck = true;
172
-
173
- SceneManager.LoadScene("TitleScene");
174
-
175
-
176
-
177
- }
178
-
179
-
180
-
181
- public bool GetTitleCheck()
182
-
183
- {
184
-
185
- return TitleCheck;
186
-
187
- }
188
-
189
-
169
+ private string Damagetag = "enemytag";
170
+
171
+ private string leftidou0201 = "leftidou0201";
172
+
173
+ private string rightidou0101 = "rightidou0101";
174
+
175
+ private string doaidou0301 = "doaidou0301";
176
+
177
+ private string doaidou0101 = "doaidou0101";
178
+
179
+ public Slider slider;
180
+
181
+ public float hp;
182
+
183
+ public SaveLoad saveload;
184
+
185
+ public bool DI = false, RI = false, LI = false, I = false;
186
+
187
+ public bool DoaOpen = false, DoaClose = false;
188
+
189
+ public float IDOU = 0.0f;
190
+
191
+ public float IDOUSpace = 0.0f;
192
+
193
+
194
+
195
+ void Start()
196
+
197
+ {
198
+
199
+ hp = saveload.GetSaveDataHp();
200
+
201
+ slider.value = hp;
202
+
203
+
204
+
205
+ SceneManager.sceneLoaded += SceneLoaded; //イベントにイベントハンドラーを追加
206
+
207
+ }
208
+
209
+
210
+
211
+ void Updata()
212
+
213
+ {
214
+
215
+ }
216
+
217
+
218
+
219
+ void Heal()
220
+
221
+ {
222
+
223
+
224
+
225
+ if (Input.GetKeyDown("2"))
226
+
227
+ {
228
+
229
+ if (hp < 20)
230
+
231
+ {
232
+
233
+ hp++;
234
+
235
+ slider.value = hp;
236
+
237
+
238
+
239
+ }
240
+
241
+ }
242
+
243
+ }
244
+
245
+
246
+
247
+ private void OnTriggerEnter2D(Collider2D collision) //コライダーの中に別のコライダーが入ったら
248
+
249
+ {
250
+
251
+ if (collision.tag == Damagetag)
252
+
253
+ {
254
+
255
+ if (hp > 0)
256
+
257
+ {
258
+
259
+ hp--;
260
+
261
+ slider.value = hp;
262
+
263
+
264
+
265
+ }
266
+
267
+
268
+
269
+ }
270
+
271
+
272
+
273
+ if (collision.tag == leftidou0201)
274
+
275
+ {
276
+
277
+ I = true;
278
+
279
+ LI = true;
280
+
281
+ StartCoroutine(DelayCoroutine(1.0f, () =>
282
+
283
+ {
284
+
285
+ IDOU = 2.0f;
286
+
287
+ IDOUSpace = 1.0f;
288
+
289
+ }));
290
+
291
+ }
292
+
293
+
294
+
295
+ if (collision.tag == rightidou0101)
296
+
297
+ {
298
+
299
+ I = true;
300
+
301
+ RI = true;
302
+
303
+ StartCoroutine(DelayCoroutine(1.0f, () =>
304
+
305
+ {
306
+
307
+ IDOU = 1.0f;
308
+
309
+ IDOUSpace = 1.0f;
310
+
311
+ }));
312
+
313
+ }
314
+
315
+
316
+
317
+ //if(collision.tag == doaidou1)
318
+
319
+ }
320
+
321
+
322
+
323
+ private void OnTriggerStay2D(Collider2D collision) //コライダーの中に別のコライダーが入っている間
324
+
325
+ {
326
+
327
+ if (collision.tag == doaidou0301)
328
+
329
+ {
330
+
331
+ if (Input.GetKeyDown("up"))
332
+
333
+ {
334
+
335
+ I = true;
336
+
337
+ DI = true;
338
+
339
+ DoaOpen = true;
340
+
341
+ StartCoroutine(DelayCoroutine(1.0f, () =>
342
+
343
+ {
344
+
345
+ DoaOpen = false;
346
+
347
+ IDOU = 3.0f;
348
+
349
+ IDOUSpace = 1.0f;
350
+
351
+ }));
352
+
353
+ }
354
+
355
+ }
356
+
357
+ if (collision.tag == doaidou0101)
358
+
359
+ {
360
+
361
+ if (Input.GetKeyDown("up"))
362
+
363
+ {
364
+
365
+ I = true;
366
+
367
+ DI = true;
368
+
369
+ StartCoroutine(DelayCoroutine(1.0f, () =>
370
+
371
+ {
372
+
373
+ IDOU = 1.0f;
374
+
375
+ IDOUSpace = 1.0f;
376
+
377
+ }));
378
+
379
+ }
380
+
381
+ }
382
+
383
+ }
384
+
385
+
386
+
387
+
388
+
389
+ void SceneLoaded(Scene nextScene, LoadSceneMode mode)
390
+
391
+ {
392
+
393
+ IDOU = 0.0f;
394
+
395
+ IDOUSpace = 0.0f;
396
+
397
+ I = false;
398
+
399
+ StartCoroutine(DelayCoroutine(1.0f, () =>
400
+
401
+ {
402
+
403
+ RI = false;
404
+
405
+ LI = false;
406
+
407
+ DI = false;
408
+
409
+ }));
410
+
411
+ }
412
+
413
+
414
+
415
+
416
+
417
+ private IEnumerator DelayCoroutine(float seconds, Action action)
418
+
419
+ {
420
+
421
+ yield return new WaitForSeconds(seconds);
422
+
423
+ action?.Invoke();
424
+
425
+ }
190
426
 
191
427
  }
192
428
 
@@ -194,362 +430,6 @@
194
430
 
195
431
 
196
432
 
197
- ###エラー内に記述されているDamageCheckSclipt
198
-
199
- ```
200
-
201
- using System;
202
-
203
- using System.Collections;
204
-
205
- using System.Collections.Generic;
206
-
207
- using UnityEngine;
208
-
209
- using UnityEngine.UI;
210
-
211
- using UnityEngine.SceneManagement;
212
-
213
-
214
-
215
- public class DamageCheckSclipt : MonoBehaviour
216
-
217
- {
218
-
219
- private string Damagetag = "enemytag";
220
-
221
- private string leftidou0201 = "leftidou0201";
222
-
223
- private string rightidou0101 = "rightidou0101";
224
-
225
- private string doaidou0301 = "doaidou0301";
226
-
227
- private string doaidou0101 = "doaidou0101";
228
-
229
- public Slider slider;
230
-
231
- public float hp;
232
-
233
- public SaveLoad saveload;
234
-
235
- public bool DI = false, RI = false, LI = false, I = false;
236
-
237
- public bool DoaOpen = false, DoaClose = false;
238
-
239
- public float IDOU = 0.0f;
240
-
241
- public float IDOUSpace = 0.0f;
242
-
243
-
244
-
245
- void Start()
246
-
247
- {
248
-
249
- hp = saveload.GetSaveDataHp();
250
-
251
- slider.value = hp;
252
-
253
-
254
-
255
- SceneManager.sceneLoaded += SceneLoaded; //イベントにイベントハンドラーを追加
256
-
257
- }
258
-
259
-
260
-
261
- void Updata()
262
-
263
- {
264
-
265
- }
266
-
267
-
268
-
269
- void Heal()
270
-
271
- {
272
-
273
-
274
-
275
- if (Input.GetKeyDown("2"))
276
-
277
- {
278
-
279
- if (hp < 20)
280
-
281
- {
282
-
283
- hp++;
284
-
285
- slider.value = hp;
286
-
287
-
288
-
289
- }
290
-
291
- }
292
-
293
- }
294
-
295
-
296
-
297
- private void OnTriggerEnter2D(Collider2D collision) //コライダーの中に別のコライダーが入ったら
298
-
299
- {
300
-
301
- if (collision.tag == Damagetag)
302
-
303
- {
304
-
305
- if (hp > 0)
306
-
307
- {
308
-
309
- hp--;
310
-
311
- slider.value = hp;
312
-
313
-
314
-
315
- }
316
-
317
-
318
-
319
- }
320
-
321
-
322
-
323
- if (collision.tag == leftidou0201)
324
-
325
- {
326
-
327
- I = true;
328
-
329
- LI = true;
330
-
331
- StartCoroutine(DelayCoroutine(1.0f, () =>
332
-
333
- {
334
-
335
- IDOU = 2.0f;
336
-
337
- IDOUSpace = 1.0f;
338
-
339
- }));
340
-
341
- }
342
-
343
-
344
-
345
- if (collision.tag == rightidou0101)
346
-
347
- {
348
-
349
- I = true;
350
-
351
- RI = true;
352
-
353
- StartCoroutine(DelayCoroutine(1.0f, () =>
354
-
355
- {
356
-
357
- IDOU = 1.0f;
358
-
359
- IDOUSpace = 1.0f;
360
-
361
- }));
362
-
363
- }
364
-
365
-
366
-
367
- //if(collision.tag == doaidou1)
368
-
369
- }
370
-
371
-
372
-
373
- private void OnTriggerStay2D(Collider2D collision) //コライダーの中に別のコライダーが入っている間
374
-
375
- {
376
-
377
- if (collision.tag == doaidou0301)
378
-
379
- {
380
-
381
- if (Input.GetKeyDown("up"))
382
-
383
- {
384
-
385
- I = true;
386
-
387
- DI = true;
388
-
389
- DoaOpen = true;
390
-
391
- StartCoroutine(DelayCoroutine(1.0f, () =>
392
-
393
- {
394
-
395
- DoaOpen = false;
396
-
397
- IDOU = 3.0f;
398
-
399
- IDOUSpace = 1.0f;
400
-
401
- }));
402
-
403
- }
404
-
405
- }
406
-
407
- if (collision.tag == doaidou0101)
408
-
409
- {
410
-
411
- if (Input.GetKeyDown("up"))
412
-
413
- {
414
-
415
- I = true;
416
-
417
- DI = true;
418
-
419
- StartCoroutine(DelayCoroutine(1.0f, () =>
420
-
421
- {
422
-
423
- IDOU = 1.0f;
424
-
425
- IDOUSpace = 1.0f;
426
-
427
- }));
428
-
429
- }
430
-
431
- }
432
-
433
- }
434
-
435
-
436
-
437
-
438
-
439
- void SceneLoaded(Scene nextScene, LoadSceneMode mode)
440
-
441
- {
442
-
443
- IDOU = 0.0f;
444
-
445
- IDOUSpace = 0.0f;
446
-
447
- I = false;
448
-
449
- StartCoroutine(DelayCoroutine(1.0f, () =>
450
-
451
- {
452
-
453
- RI = false;
454
-
455
- LI = false;
456
-
457
- DI = false;
458
-
459
- }));
460
-
461
- }
462
-
463
-
464
-
465
-
466
-
467
-
468
-
469
- public float HP()
470
-
471
- {
472
-
473
- return hp;
474
-
475
- }
476
-
477
-
478
-
479
- public bool IdouCheck()
480
-
481
- {
482
-
483
- return I;
484
-
485
- }
486
-
487
-
488
-
489
- public bool RightIdouCheck()
490
-
491
- {
492
-
493
- return RI;
494
-
495
- }
496
-
497
-
498
-
499
- public bool LeftIdouCheck()
500
-
501
- {
502
-
503
- return LI;
504
-
505
- }
506
-
507
- public bool DoaIdouCheck()
508
-
509
- {
510
-
511
- return DI;
512
-
513
- }
514
-
515
-
516
-
517
- public float Idounumber()
518
-
519
- {
520
-
521
- return IDOU;
522
-
523
- }
524
-
525
-
526
-
527
- public float IdouSpacenumber()
528
-
529
- {
530
-
531
- return IDOUSpace;
532
-
533
- }
534
-
535
-
536
-
537
- private IEnumerator DelayCoroutine(float seconds, Action action)
538
-
539
- {
540
-
541
- yield return new WaitForSeconds(seconds);
542
-
543
- action?.Invoke();
544
-
545
- }
546
-
547
- }
548
-
549
- ```
550
-
551
-
552
-
553
433
  ### 補足情報(FW/ツールのバージョンなど)
554
434
 
555
435
  Unity 2020.3.9f1

3

試したことの追加

2021/12/10 07:41

投稿

nanakaka
nanakaka

スコア1

test CHANGED
File without changes
test CHANGED
@@ -36,6 +36,16 @@
36
36
 
37
37
 
38
38
 
39
+ ###試したこと
40
+
41
+ 1.DamageCheckScliptの128,129,133行目を削除するとエラーなしで動作した。
42
+
43
+ 2.↑のプログラムのまま、127行目にDebug.Log(I);を追加して実行してもエラーは出なかった。
44
+
45
+  しかし、なぜか3回デバッグされた。
46
+
47
+
48
+
39
49
  ### DontDestroyOnLoadとsingletonを使用しているスクリプト
40
50
 
41
51
  ```C#

2

コードの修正

2021/12/09 08:50

投稿

nanakaka
nanakaka

スコア1

test CHANGED
File without changes
test CHANGED
@@ -10,10 +10,6 @@
10
10
 
11
11
 
12
12
 
13
- DamageCheckScliptのSceneを切り替えたときに動作するプログラムで何かを実行するとエラーになってしまうみたいです。
14
-
15
-
16
-
17
13
  一度削除してしまうともう使用できなくなってしまうのでしょうか?
18
14
 
19
15
  いろいろなサイトを調べてみたのですが見つからなかったので質問させていただきました。

1

エラーの条件を少し詳しく書き直しました。

2021/12/09 08:39

投稿

nanakaka
nanakaka

スコア1

test CHANGED
File without changes
test CHANGED
@@ -10,6 +10,10 @@
10
10
 
11
11
 
12
12
 
13
+ DamageCheckScliptのSceneを切り替えたときに動作するプログラムで何かを実行するとエラーになってしまうみたいです。
14
+
15
+
16
+
13
17
  一度削除してしまうともう使用できなくなってしまうのでしょうか?
14
18
 
15
19
  いろいろなサイトを調べてみたのですが見つからなかったので質問させていただきました。
@@ -26,7 +30,7 @@
26
30
 
27
31
  UnityEngine.MonoBehaviour.StartCoroutine (System.Collections.IEnumerator routine) (at <ef667cdc82bf4a4e911d1ddea9ff581d>:0)
28
32
 
29
- DamageCheckSclipt.SceneLoaded (UnityEngine.SceneManagement.Scene nextScene, UnityEngine.SceneManagement.LoadSceneMode mode) (at Assets/DamageCheckSclipt.cs:125)
33
+ DamageCheckSclipt.SceneLoaded (UnityEngine.SceneManagement.Scene nextScene, UnityEngine.SceneManagement.LoadSceneMode mode) (at Assets/DamageCheckSclipt.cs:128)
30
34
 
31
35
  UnityEngine.SceneManagement.SceneManager.Internal_SceneLoaded (UnityEngine.SceneManagement.Scene scene, UnityEngine.SceneManagement.LoadSceneMode mode) (at <ef667cdc82bf4a4e911d1ddea9ff581d>:0)
32
36