回答編集履歴

2

汎用的に変更

2018/06/27 06:08

投稿

takezoux2
takezoux2

スコア3

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

1

実装元を勘違いしていたので修正

2018/06/27 06:08

投稿

takezoux2
takezoux2

スコア3

test CHANGED
@@ -1,10 +1,10 @@
1
- まず、SingletonMonoBehaviorは標準ライブラリに無いため、どのSingletonMonoBehavior実装であるかがわからないと正確なところがわかりません。後はUniRXと仮定して書いていきます。
1
+ まず、SingletonMonoBehaviorは標準ライブラリに無いため、どのSingletonMonoBehavior実装であるかがわからないと正確なところがわかりません。後は[こちら](https://gist.github.com/tsubaki/e0406377a1b014754894)の実装と仮定して書いていきます。
2
2
 
3
3
 
4
4
 
5
- 1. UniRXのSingletonMonoBehaviorを使用しているならば、AwakeValidlyをoverrideして、その中でDontDestoryOnLoad()を呼び出せばOKです。起きている現象は、変な場所でDontDestoryOnLoadを呼び出しているからかと思います。実装を見直してください。(DoTweenが勝手にDontDestoryOnLoadを呼び出してはいないです)
5
+ 1. テラシュールさんのSingletonMonoBehaviorを使用しているならば、AwakeValidlyをoverrideして、その中でDontDestoryOnLoad()を呼び出せばOKです。起きている現象は、変な場所でDontDestoryOnLoadを呼び出しているからかと思います。実装を見直してください。(DoTweenが勝手にDontDestoryOnLoadを呼び出してはいないです)
6
6
 
7
- 2. UniRXの(略、ScoreManager.InstanceでScoreManagerのインスタンスがどこでも取得出来ます。DontDestoryOnLoadが変なところで呼び出される実装を修正すれば普通にあとはScoreManagerのフィールドまたはプロパティとして保持すれば良いかと思います。
7
+ 2. テラシュールさんの(略、ScoreManager.InstanceでScoreManagerのインスタンスがどこでも取得出来ます。DontDestoryOnLoadが変なところで呼び出される実装を修正すれば普通にあとはScoreManagerのフィールドまたはプロパティとして保持すれば良いかと思います。
8
8
 
9
9
 
10
10