Unity在5.0中新增了一個叫RuntimeInitializeOnLoadMethod的東西。
用這個東西可以在Awake()之前直接呼叫使用此的Function。
在Unity初始該Gameobject時,順序會為
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
Awake()
OnEnabled()
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
[RuntimeInitializeOnLoadMethod]
void Start()
優點是可以在該Gameobject在Awake()前就可以被呼叫+設定。
缺點是你不知道他幾時被呼叫,並且在被呼叫之前做設定也有可能會抓到null的狀況。
另外,關於Awake跟OnEnable的不同
Awake:
1.GameObject有附加Component的情況下,該Component只會呼叫一次Awake()
2.就算該Component被Disable的狀況下,還是會呼叫Awake(),但在該GameObject也被disable的狀況下不會被呼叫。
Onable:
1.該Component被Enable的時候會呼叫,被disble->enable時也會再被呼叫一次。

沒有留言:
張貼留言