Unityでスクリプトの実行順を制御する
Unityでスクリプトの実行順を制御する
Unityで動作するスクリプトの実行順を制御する方法を紹介します。
[Unity_317×90]
前書き
通常、それぞれのスクリプトのAwakeやStart、Updateは実行環境に読み込まれた順(ランダム)に実行されますが、この機能を使用すると、スクリプトの実行順を明示的に変更、制御することができます。
かなり前からある機能ですが、知らない生徒さんも多いです。
確かに、Unity始めましたー!って方は本を買って勉強してる場合が多く、そして市販の本の中でこの機能について触れてるのを見たことがない気がします。(立ち読みした限りなのできっと書いてる本もあるはず)
スクリプト実行順設定
- 何らかのスクリプトをインスペクターに表示し、右上の “Execution Order…” をクリック。
(もしくは、Edit > Project Settings > Script Execution Order をクリック) - MonoManagerが表示されたら、順番を設定したいスクリプトをドラッグ&ドロップして登録。
- 他のスクリプトより先に実行したい場合は、”Default Time” よりも↑に、後に実行したい場合は↓にドラッグ&ドロップで移動。
設定は以上です。
ここで設定しなかったスクリプトは “Default Time” 中にランダムな順番で読み込まれます。
後書き
この機能、バグの検証に使えなくもない気がします。
(なんかたまにうまく動くんだけどなー・・・的なケースだと、実行順のせいだったり、負荷による処理落ちだったりするので)
けれども、この機能ありきのゲームはメンテナンス性が著しく低くなりそうなので極力避けた方がよい気がします。
スクリプトの実行順に左右されないクラス設計を心掛けたいですね。
▶
【Unity】3Dアクションゲームを作ろう!#7 ステージの作成(Skybox・落下判定)
▶
【Unity】3Dアクションゲームを作ろう!#8 ステージの作成(スイッチ・扉)
▶
【Unity】3Dアクションゲームを作ろう!#9 プレイヤーのHP管理
▶
【初心者Unity】JsonUtilityクラスでJSONを扱う方法
▶
【初心者Unity】スクリプトからコンポーネントを追加する方法
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発