Unityでスクリプトの実行順を制御する


Unityでスクリプトの実行順を制御する


Unityで動作するスクリプトの実行順を制御する方法を紹介します。

前書き


通常、それぞれのスクリプトのAwakeやStart、Updateは実行環境に読み込まれた順(ランダム)に実行されますが、この機能を使用すると、スクリプトの実行順を明示的に変更、制御することができます。

かなり前からある機能ですが、知らない生徒さんも多いです。

確かに、Unity始めましたー!って方は本を買って勉強してる場合が多く、そして市販の本の中でこの機能について触れてるのを見たことがない気がします。(立ち読みした限りなのできっと書いてる本もあるはず)

スクリプト実行順設定


  1. 何らかのスクリプトをインスペクターに表示し、右上の “Execution Order…” をクリック。
    (もしくは、Edit > Project Settings > Script Execution Order をクリック)
  2. MonoManagerが表示されたら、順番を設定したいスクリプトをドラッグ&ドロップして登録。
  3. 他のスクリプトより先に実行したい場合は、”Default Time” よりも↑に、後に実行したい場合は↓にドラッグ&ドロップで移動。

WS000353

設定は以上です。

ここで設定しなかったスクリプトは “Default Time” 中にランダムな順番で読み込まれます。

後書き


この機能、バグの検証に使えなくもない気がします。
(なんかたまにうまく動くんだけどなー・・・的なケースだと、実行順のせいだったり、負荷による処理落ちだったりするので)

けれども、この機能ありきのゲームはメンテナンス性が著しく低くなりそうなので極力避けた方がよい気がします。

スクリプトの実行順に左右されないクラス設計を心掛けたいですね。

今月の新着記事

【Unity認定試験対策】業界情報のチャプターで出題される用語の解説
【解けないとマズいレベルの練習問題】C# 練習問題 8
【Unity認定試験対策】Unity 練習問題 11 - Animator -
【Unity認定試験対策】Unity 練習問題 12 - Navmesh -

記事一覧にもどる

  • このエントリーをはてなブックマークに追加

PAGE TOP