だらだら〜自由自在〜

インディーゲーム制作チーム GAME GABURI でプログラム担当してます

MonobehaviourのMethod呼び出し順序

改めて確認。

  • Awake
  • Start
  • Update
  • LateUpdate
  • FixedUpdate
  • OnGUI

にログを仕込んでPlayしてみる。

  • Awake
    • Playした直後一番最初に呼ばれる
  • Start
    • Awakeの次。最初のUpdateの直前に一回だけ呼ばれる
  • Update
    • 毎フレーム呼ばれる
  • LateUpdate
    • 毎フレーム、Updateの後に呼ばれる
  • FixedUpdate
    • 一定間隔で呼ばれる。1フレーム中に何回も呼ばれることがある
  • OnGUI
    • 不定期に呼ばれる?1フレーム中に何回も呼ばれることがある

という結果になった。

GameObject間での呼び出し順序。
2つのGameObjectをつくって上記Methodの呼び出し順序を見てみると、

  • GameObjectA::Awake
  • GameObjectB::Awake
  • GameObjectA::Start
  • GameObjectB::Start
  • GameObjectA::FixedUpdate
  • GameObjectB::FixedUpdate
  • GameObjectA::Update
  • GameObjectB::Update

いかA,B,A,Bで。つまり、全GameObjectのUpdateが終わった後に全GameObjectのLateUpdateが呼ばれる。

あるGameObjectにアタッチされたScript間での順序は見てない(が、特にルールは無かった記憶がある、情報元は忘れたが...)

GameObjectの親子間でのそれぞれのスクリプトの実行順序も見ていない(これもルール無かった気がするが...)