投稿者 tel | 2011年8月28日

Unityのオブジェクトの実行順序

Unity 3.4からはスクリプトの実行順序が制御できるようになっている。でもシーン中のオブジェクトの実行順序(UpdateとかAwakeとか)が設定できるところが見つからなかったのでどうなってるか調べてみた。

シーン中にCubeを配置して次のスクリプトをくっつける。

var dbg: GUIText;
var once: boolean = false;

function Awake() {
	dbg.text += gameObject.name + "\n";
}

function Update() {
	if(!once && Time.time > 1.0f) {
		dbg.text += gameObject.name + ":" + Time.time + "\n";
		once = true;
	}
}

シーンに配置したGUITextに実行された順番を記録する。シーンに4つのCubeを配置した。Cubeの作成順序はCube0、Cube1、Cube2、Cube3の順番、スクリプトをくっつける順番も一緒。

シーン

実行してみた。

実行結果

Update、AwakeともにCube3から実行されている。

次にシーン中のCubeのスクリプトを取り外してCube3、Cube2、Cube1、Cube0の順番で取り付けて実行してみる。

実行結果2

最後に取り付けたスクリプトから順番に実行されている?PC版とWebPlayer版でも同じ結果になった。AndroidとかiPhone版だとどうなるか不明。


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。