回答編集履歴
2
修正
test
CHANGED
@@ -28,7 +28,9 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
+
`ScriptableObject`の`Awake`のみランタイムは関係ありません。
|
32
|
+
|
31
|
-
|
33
|
+
生成後Project上に残り続けるデータだからです。メソッド名が同じなので混乱しますね。違う名前にして欲しかったです。
|
32
34
|
|
33
35
|
|
34
36
|
|
@@ -82,11 +84,11 @@
|
|
82
84
|
|
83
85
|
|
84
86
|
|
85
|
-
###
|
87
|
+
### イベントの実行順
|
86
88
|
|
87
89
|
|
88
90
|
|
89
|
-
ヒエラルキーに設置したオブジェクト(`MonoBehaviour`)とアタッチしている`ScriptableObject`と
|
91
|
+
ヒエラルキーに設置したオブジェクト(`MonoBehaviour`)とアタッチしている`ScriptableObject`と想定すると下記の実行順となります。
|
90
92
|
|
91
93
|
|
92
94
|
|
@@ -97,3 +99,17 @@
|
|
97
99
|
3. MonoBehaviour.OnEnable()
|
98
100
|
|
99
101
|
4. MonoBehaviour.Start()
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
### 今回詳しく解説した理由
|
106
|
+
|
107
|
+
今回の`power`は取得タイミングによって値が変わります。
|
108
|
+
|
109
|
+
`OnEnable`が走る前は0を返し、`OnEnable`が走った後は計算された値を返します。
|
110
|
+
|
111
|
+
こういうのをプログラム用語で「副作用がある」と言います。
|
112
|
+
|
113
|
+
今回の説明で`OnEnable`で`power`に代入すれば**常に計算された値を取得できる**事が保証されているのが分かると思います。
|
114
|
+
|
115
|
+
特に今回のような戻り値のあるもので副作用がある場合、バグになりやすいので徹底的に問題無いか調査するのをおすすめします。
|
1
修正
test
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
-
`ScriptableObject`の`Awake`のみランタイムは関係ありません。生成後、Project上に残り続けるデータなので
|
31
|
+
`ScriptableObject`の`Awake`のみランタイムは関係ありません。生成後、Project上に残り続けるデータだからです。メソッド名が同じなので混乱しますね。違う名前にして欲しかったです。
|
32
32
|
|
33
33
|
|
34
34
|
|
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
ヒエラルキーに設置したオブジェクトとアタッチしている`ScriptableObject`とういう条件の比較です。
|
89
|
+
ヒエラルキーに設置したオブジェクト(`MonoBehaviour`)とアタッチしている`ScriptableObject`とういう条件の比較です。
|
90
90
|
|
91
91
|
|
92
92
|
|