Unityがプレイモードに入るときのコールバック呼び出し順

プレイボタンをポチっと押してから、実際にプレイ開始されるまでの間に呼ばれるコールバックの呼び出し順を調べてみたのでその覚書。

今回調べたもの

UnityEditor

UnityEngine

スクリプト

スクリプトはこちら

これを適当なGameObjectに張り付けて、プレイボタンをポチっとすればConsoleにログが表示されます。

Unity2020.1.2f1で確認

試しにUnity2020.1.2f1で確認してみたところ以下のようになりました。

※ Enter Play Mode Settingsはオフ(全てリロードされる状態)
※「PlayStart」、「 Play : 時間」と出るログは別物のログ。
※「Error detecting ~」はVS周りのエラーログ(?)

個人的にOnAfterDeserialize()が呼び出されるタイミングが意外ですね。

  • プレイボタン押した直後からInitializeOnEnterModeの間に古いインスタンスのOnAfterDeserializeが呼ばれている点
  • DidReloadScripts直後に呼ばれておりBeforeSceneLoad~AfterSceneLoadの間ではない点

この辺りは気を付けたほうが良さそうです。

Unityのアセット販売中!

ステートマシンの状態遷移やパラメータはエディタで編集でき、
ゲームロジックに依存するステートの挙動はスクリプトで記述可能なエディタ拡張。

詳細はこちら

RPGツクールVXやWOLF RPGエディターのオートタイルに準拠したエディタ拡張。

詳細はこちら

オススメ!