テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

スクリプト実行の順番を変える?

スクリプトの実行順を指定する方法。

この方法を使えばスクリプトの実行順は変わったように見えるが
これがどのような影響を与えるのかよくわからない。

ただお蔵入りするには惜しいので、メモとして残しておく。

スクリプトを実行する順番について

Unityのメソッドは、Awake->Start≒Updateの順番で呼び出される。

ただし、AwakeやStartはUnityが実行するので、その実行順番を知ることはできなかった。
(一応、スクリプト登録時は登録した順番で動くが、一度ビルド時に同じ順番で動くとは限らない)

そのため、一部の処理はシーン遷移前に実行しておくとか、色々面倒な事をしていた。


例えば、リソースを動的に管理するResourceManagerを作成したとして、
リソースマネージャの初期化場所をAwakeとする。
次にキャラクターを初期化する処理をAwakeに作成し、リソースマネージャーから
リソース情報を取得しようとしたとする。
この時、キャラクターを初期化するAwakeが先に呼ばれてしまうと、面倒な事になる。
いいか、俺は面倒が嫌いなんだ

自分で組めば対処法はいくらでもあるけれど、アセットを使っていると対処しようがない事がある。

スクリプトの実行順番を変える方法

探究心(ボタンがあったら押してみたくなる法則)により偶然発見したので紹介。

1.Projectのスクリプトを選択し、inspectorのExecution orderを選択。
2.MonoManagerが表示されるので、スクリプトD&Dで登録。
3.D&Dスクリプトの順番を入れ替える。

スクリーンショット 2012-06-01 17.19.10 スクリーンショット 2012-06-01 17.25.18

まあ基本は、自分を初期化する処理をAwakeに配置し、外部と連携する処理は
Startに書いておけば概ね問題はないと思う。


こういった泥臭い事を始めると、後々仕様を把握するのにすごい時間かかるし。
余程のことがない限りは使いたくないな。なんとなく。