回答編集履歴
2
汎用的に変更
answer
CHANGED
@@ -1,15 +1,19 @@
|
|
1
|
-
まず、SingletonMonoBehaviorは標準ライブラリに無いため、どのSingletonMonoBehavior実装であるかがわからないと正確なところがわかりません。後は
|
1
|
+
まず、SingletonMonoBehaviorは標準ライブラリに無いため、どのSingletonMonoBehavior実装であるかがわからないと正確なところがわかりません。後は推測で書きます。
|
2
2
|
|
3
|
-
1.
|
4
|
-
2.
|
3
|
+
1. 普通ならAwakeをoverrideして、その中でDontDestoryOnLoad()を呼び出せばOKです。起きている現象は、変な場所でDontDestoryOnLoadを呼び出しているからかと思います。実装を見直してください。(DoTweenが勝手にDontDestoryOnLoadを呼び出してはいないです)
|
4
|
+
2. 普通の実装なら、static ScoreManager Instanceなどが定義されているので、ScoreManager.InstanceでScoreManagerのインスタンスがどこでも取得出来ます。DontDestoryOnLoadが変なところで呼び出される実装を修正すれば普通にあとはScoreManagerのフィールドまたはプロパティとして保持すれば良いかと思います。
|
5
5
|
|
6
6
|
|
7
7
|
```csharp
|
8
8
|
public class ScoreManager : SingletonMonoBehaviour<ScoreManager>
|
9
9
|
public int Score{get;set;}
|
10
|
+
//継承元のAwake実装がvirtualになっていない場合、virtualに変更する必要があります。
|
10
|
-
protected override void
|
11
|
+
protected override void Awake()
|
11
12
|
{
|
13
|
+
base.Awake();
|
14
|
+
if(Instance == this) {
|
12
|
-
|
15
|
+
DontDestoryOnLoad(this.gameObject);
|
16
|
+
}
|
13
17
|
}
|
14
18
|
}
|
15
19
|
|
1
実装元を勘違いしていたので修正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
まず、SingletonMonoBehaviorは標準ライブラリに無いため、どのSingletonMonoBehavior実装であるかがわからないと正確なところがわかりません。後は
|
1
|
+
まず、SingletonMonoBehaviorは標準ライブラリに無いため、どのSingletonMonoBehavior実装であるかがわからないと正確なところがわかりません。後は[こちら](https://gist.github.com/tsubaki/e0406377a1b014754894)の実装と仮定して書いていきます。
|
2
2
|
|
3
|
-
1.
|
4
|
-
2.
|
3
|
+
1. テラシュールさんのSingletonMonoBehaviorを使用しているならば、AwakeValidlyをoverrideして、その中でDontDestoryOnLoad()を呼び出せばOKです。起きている現象は、変な場所でDontDestoryOnLoadを呼び出しているからかと思います。実装を見直してください。(DoTweenが勝手にDontDestoryOnLoadを呼び出してはいないです)
|
4
|
+
2. テラシュールさんの(略、ScoreManager.InstanceでScoreManagerのインスタンスがどこでも取得出来ます。DontDestoryOnLoadが変なところで呼び出される実装を修正すれば普通にあとはScoreManagerのフィールドまたはプロパティとして保持すれば良いかと思います。
|
5
5
|
|
6
6
|
|
7
7
|
```csharp
|