質問編集履歴
4
プログラムの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,9 +2,8 @@
|
|
2
2
|
別のシーンに移動してもplayerなどのオブジェクトを引ぎ継ぎたいと思い、DontDestroyOnLoadとsingletonを使用しています。
|
3
3
|
|
4
4
|
### 発生している問題・エラーメッセージ
|
5
|
-
タイトル画面からスタートし、通常にscene移動する分にはエラーは起きないのですが、一度タイトル画面に戻るときにDontDestroyOnLoadを削除し、もう一度スタートすると、移動
|
5
|
+
タイトル画面からスタートし、通常にscene移動する分にはエラーは起きないのですが、一度タイトル画面に戻るときにDontDestroyOnLoadを削除し、もう一度スタートすると、scene移動した際に下記のようなエラーが出てしまいます。
|
6
6
|
|
7
|
-
一度削除してしまうともう使用できなくなってしまうのでしょうか?
|
8
7
|
いろいろなサイトを調べてみたのですが見つからなかったので質問させていただきました。
|
9
8
|
```
|
10
9
|
エラーメッセージ
|
@@ -28,74 +27,50 @@
|
|
28
27
|
using System.Collections;
|
29
28
|
using System.Collections.Generic;
|
30
29
|
using UnityEngine;
|
30
|
+
using UnityEngine.SceneManagement;
|
31
31
|
|
32
32
|
public class Object : MonoBehaviour
|
33
33
|
{
|
34
34
|
public static Object singleton;
|
35
35
|
|
36
|
-
|
36
|
+
void Awake()
|
37
|
+
{
|
37
38
|
|
38
|
-
public bool titlecheck = false;
|
39
39
|
|
40
|
-
|
40
|
+
// スクリプトが設定されていなければゲームオブジェクトを残しつつスクリプトを設定
|
41
|
-
|
41
|
+
|
42
42
|
if (singleton == null)
|
43
43
|
{
|
44
44
|
DontDestroyOnLoad(gameObject);
|
45
45
|
singleton = this;
|
46
46
|
}
|
47
|
+
// このシーンの同じゲームオブジェクトを削除
|
47
48
|
else
|
48
49
|
{
|
49
50
|
Destroy(gameObject);
|
50
51
|
}
|
51
|
-
|
52
52
|
}
|
53
53
|
|
54
54
|
void Start()
|
55
55
|
{
|
56
|
-
|
56
|
+
|
57
57
|
}
|
58
58
|
|
59
59
|
|
60
60
|
void Update()
|
61
61
|
{
|
62
|
-
|
62
|
+
if (SceneManager.GetActiveScene().name == "TitleScene")
|
63
|
-
if (titlecheck)
|
64
63
|
{
|
65
64
|
Destroy(gameObject);
|
66
65
|
}
|
67
66
|
}
|
67
|
+
|
68
68
|
}
|
69
69
|
|
70
|
-
```
|
71
70
|
|
72
|
-
###タイトルに戻ったことを判定するスクリプト
|
73
71
|
```
|
74
|
-
using UnityEngine;
|
75
|
-
using System.Collections;
|
76
|
-
using UnityEngine.UI;
|
77
|
-
using UnityEngine.SceneManagement;
|
78
72
|
|
79
|
-
public class ProcessingUI : MonoBehaviour
|
80
|
-
{
|
81
|
-
public bool TitleCheck = false;
|
82
73
|
|
83
|
-
|
84
|
-
public void LoadingTitleScene()
|
85
|
-
{
|
86
|
-
TitleCheck = true;
|
87
|
-
SceneManager.LoadScene("TitleScene");
|
88
|
-
|
89
|
-
}
|
90
|
-
|
91
|
-
public bool GetTitleCheck()
|
92
|
-
{
|
93
|
-
return TitleCheck;
|
94
|
-
}
|
95
|
-
|
96
|
-
}
|
97
|
-
```
|
98
|
-
|
99
74
|
###エラー内に記述されているDamageCheckSclipt
|
100
75
|
```
|
101
76
|
using System;
|
@@ -231,41 +206,6 @@
|
|
231
206
|
}
|
232
207
|
|
233
208
|
|
234
|
-
|
235
|
-
public float HP()
|
236
|
-
{
|
237
|
-
return hp;
|
238
|
-
}
|
239
|
-
|
240
|
-
public bool IdouCheck()
|
241
|
-
{
|
242
|
-
return I;
|
243
|
-
}
|
244
|
-
|
245
|
-
public bool RightIdouCheck()
|
246
|
-
{
|
247
|
-
return RI;
|
248
|
-
}
|
249
|
-
|
250
|
-
public bool LeftIdouCheck()
|
251
|
-
{
|
252
|
-
return LI;
|
253
|
-
}
|
254
|
-
public bool DoaIdouCheck()
|
255
|
-
{
|
256
|
-
return DI;
|
257
|
-
}
|
258
|
-
|
259
|
-
public float Idounumber()
|
260
|
-
{
|
261
|
-
return IDOU;
|
262
|
-
}
|
263
|
-
|
264
|
-
public float IdouSpacenumber()
|
265
|
-
{
|
266
|
-
return IDOUSpace;
|
267
|
-
}
|
268
|
-
|
269
209
|
private IEnumerator DelayCoroutine(float seconds, Action action)
|
270
210
|
{
|
271
211
|
yield return new WaitForSeconds(seconds);
|
3
試したことの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -17,6 +17,11 @@
|
|
17
17
|
|
18
18
|
```
|
19
19
|
|
20
|
+
###試したこと
|
21
|
+
1.DamageCheckScliptの128,129,133行目を削除するとエラーなしで動作した。
|
22
|
+
2.↑のプログラムのまま、127行目にDebug.Log(I);を追加して実行してもエラーは出なかった。
|
23
|
+
しかし、なぜか3回デバッグされた。
|
24
|
+
|
20
25
|
### DontDestroyOnLoadとsingletonを使用しているスクリプト
|
21
26
|
```C#
|
22
27
|
using System;
|
2
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,8 +4,6 @@
|
|
4
4
|
### 発生している問題・エラーメッセージ
|
5
5
|
タイトル画面からスタートし、通常にscene移動する分にはエラーは起きないのですが、一度タイトル画面に戻るときにDontDestroyOnLoadを削除し、もう一度スタートすると、移動先のsceneで下記のエラーが大量にでてきます。
|
6
6
|
|
7
|
-
DamageCheckScliptのSceneを切り替えたときに動作するプログラムで何かを実行するとエラーになってしまうみたいです。
|
8
|
-
|
9
7
|
一度削除してしまうともう使用できなくなってしまうのでしょうか?
|
10
8
|
いろいろなサイトを調べてみたのですが見つからなかったので質問させていただきました。
|
11
9
|
```
|
1
エラーの条件を少し詳しく書き直しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
### 発生している問題・エラーメッセージ
|
5
5
|
タイトル画面からスタートし、通常にscene移動する分にはエラーは起きないのですが、一度タイトル画面に戻るときにDontDestroyOnLoadを削除し、もう一度スタートすると、移動先のsceneで下記のエラーが大量にでてきます。
|
6
6
|
|
7
|
+
DamageCheckScliptのSceneを切り替えたときに動作するプログラムで何かを実行するとエラーになってしまうみたいです。
|
8
|
+
|
7
9
|
一度削除してしまうともう使用できなくなってしまうのでしょうか?
|
8
10
|
いろいろなサイトを調べてみたのですが見つからなかったので質問させていただきました。
|
9
11
|
```
|
@@ -12,7 +14,7 @@
|
|
12
14
|
MissingReferenceException: The object of type 'DamageCheckSclipt' has been destroyed but you are still trying to access it.
|
13
15
|
Your script should either check if it is null or you should not destroy the object.
|
14
16
|
UnityEngine.MonoBehaviour.StartCoroutine (System.Collections.IEnumerator routine) (at <ef667cdc82bf4a4e911d1ddea9ff581d>:0)
|
15
|
-
DamageCheckSclipt.SceneLoaded (UnityEngine.SceneManagement.Scene nextScene, UnityEngine.SceneManagement.LoadSceneMode mode) (at Assets/DamageCheckSclipt.cs:
|
17
|
+
DamageCheckSclipt.SceneLoaded (UnityEngine.SceneManagement.Scene nextScene, UnityEngine.SceneManagement.LoadSceneMode mode) (at Assets/DamageCheckSclipt.cs:128)
|
16
18
|
UnityEngine.SceneManagement.SceneManager.Internal_SceneLoaded (UnityEngine.SceneManagement.Scene scene, UnityEngine.SceneManagement.LoadSceneMode mode) (at <ef667cdc82bf4a4e911d1ddea9ff581d>:0)
|
17
19
|
|
18
20
|
```
|