まるコットでメモ的な何か

Hierarchy上のPrefabオブジェクトを設置し直したらUnityActionが反応しなくなった

べつに参照が切れたわけでも無く、何故か今まで動いていたUnityActionが反応しなくなった。

実装を見てみると、UnityActionのSubscribeしているMonoBehaviorとInvokeしているMonoBehaviorの定義がどちらもStart()内に設置されていた。

どちらのMonoBehaviorのStart()が先に実行されるかは分からない。
(今回の挙動でいうとGameObjectの作り直し等によっても順序が変わるのであろうか。)

解決策の1つとして、Script Execution Orderを設定することでStart()の実行順序を明示的に指定できる。

なお今回のケースはScript Execution Orderを使うまでもなく、SubscribeをAwake()に記述し直すことでその後のInvoke()を受け取れるようにして解決した。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です