【ハルシオンブログ】スクリプトの実行順の制御
こんにちは。
大坂です。
Unityでスクリプト間のAwake、Startの実行順を制御する方法です。
Awake、Startの実行順を気にしない作りにする方がいい気もしますが、方法があるのでご紹介。
使うのは「DefaultExecutionOrder」属性ですね。
とりあえず何も指定しないで実行してみます。
Test_1.cs
Test_2.cs
実行結果。

Test_2の方が先に実行されてますね。
(オブジェクトに後にアタッチしたスクリプトが先に実行されるようですが、いっぱいあるとそんなの気にしてられませんね・・・。)
Test_1に[DefaultExecutionOrder(-1)]を設定して先に実行されるようにしてみます。
属性を設定しないと「0」で、値が小さい方が先に実行されるので「-1」を設定します。
Test_1.cs
実行結果。

ちゃんとTest_1が先に実行されてますね。
他にも実行順を制御するのに[Editor]-[ProjectSettings]-[Script Execution Order]を使う方法もありますね。
前に書いてました・・・
では今週もこれにてノシ
大坂です。
Unityでスクリプト間のAwake、Startの実行順を制御する方法です。
Awake、Startの実行順を気にしない作りにする方がいい気もしますが、方法があるのでご紹介。
使うのは「DefaultExecutionOrder」属性ですね。
とりあえず何も指定しないで実行してみます。
Test_1.cs
public class Test_1 : MonoBehaviour
{
private void Awake() {
Debug.Log("Test_1 Awake");
}
private void Start() {
Debug.Log("Test_1 Start");
}
}
Test_2.cs
public class Test_2 : MonoBehaviour
{
private void Awake() {
Debug.Log("Test_2 Awake");
}
private void Start() {
Debug.Log("Test_2 Start");
}
}
実行結果。

Test_2の方が先に実行されてますね。
(オブジェクトに後にアタッチしたスクリプトが先に実行されるようですが、いっぱいあるとそんなの気にしてられませんね・・・。)
Test_1に[DefaultExecutionOrder(-1)]を設定して先に実行されるようにしてみます。
属性を設定しないと「0」で、値が小さい方が先に実行されるので「-1」を設定します。
Test_1.cs
[DefaultExecutionOrder(-1)]
public class Test_1 : MonoBehaviour
{
private void Awake() {
Debug.Log("Test_1 Awake");
}
private void Start() {
Debug.Log("Test_1 Start");
}
}
実行結果。

ちゃんとTest_1が先に実行されてますね。
他にも実行順を制御するのに[Editor]-[ProjectSettings]-[Script Execution Order]を使う方法もありますね。
前に書いてました・・・
では今週もこれにてノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】deltaTimeを使えばストップウォッチとか、ゲームのタイマーとか作れます。( ー`дー´)キリッ | 【ハルシオンブログ】Unity+VisualStudioを使ってるんだけど、ちょっと使えそうな拡張機能の紹介 »
コメント
| h o m e |