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

ども、ゴコーです。

今回はスクリプトの実行順序についてです。

通常、 Unity のスクリプトの実行順序は制御できません。

例えば、以下のようなスクリプトを3つ用意、適当なオブジェクトにアタッチして実行してみます。

すると、以下のような結果になります。

execute0

スクリプトを置いてる階層を変えれば良いのかとか、
オブジェクトでの順序を変更すればいいのかなど色々変更もしてみましたが変化はありませんでした。

多分スクリプトを作成/インポートする段階で決定されていると思うのですが、
何せ一度インポートされたスクリプトの実行順序は通常変更することはできないようです。

実行順序を変更する方法は確認しているもので2つあるのですが、今回はエディター上から変更してみましょう。

参考:http://docs.unity3d.com/ja/current/Manual/class-ScriptExecution.html

Edit > Project Settings > Script Execution Order を選択してください。

execute1

execute2

英語で色々書いてますが、要約すると

  • ドラッグ&ドロップでスクリプトを登録できるよ!
  • 登録したスクリプトの実行順序は Unity のデフォルト実行順序を基準として前後に調節できるよ!
  • (実行順序を1つ変更するとメタデータを何個か書き換えちゃうかもね!)

だそうです。こんな軽い感じではありません。

では実行順序を変更してみましょう。

execute3

スクリプトを3つ登録しました。

ドラッグした直後はこのようにデフォルトの読み込み時間より遅い時間に登録されます。
右下の Apply ボタンをクリックすると登録が完了します。

では、タイミングで実行してみましょう。

execute4

ちゃんと順番が制御できていることを確認できます。

登録したスクリプトはドラッグすることで自由に実行順序を前後させることもできます。

実行の順番に拘らないものは弄らずに Default Time のままにしておいて、
マネージャークラスなど特別順番に拘りたいものには今回のように手動での制御をするとよさそうですね。

では、また。

Comments

comments

スポンサーリンク
336*280px