青空の月

Unity, C#, アプリ開発関連について。

Unityプロジェクトのロードが終わった後にスクリプトを実行したい。

 前回はUnity起動時、スクリプト更新時直後に実行する場合。

今回は、起動直後ではなく、少し遅らせてプロジェクトが読み込み終わった後に実行させたい場合の方法。

 

using UnityEngine;
using UnityEditor;

[InitializeOnLoad]
public class InitOnLoad {

    static int couner = 0;

	static InitOnLoad()
	{
		++couner;
		EditorApplication.update += Update;
		Debug.Log(couner + " InitOnLoad!");
	}

	static void Update()
	{
		++couner;
		Debug.Log(couner + " Update!");
		EditorApplication.update -= Update;
	}

}

「EditorApplication.update」デリゲートに登録させるという方法。updateに登録すると毎フレーム呼ばれてしまうので、1回だけでいい場合はupdate関数内で登録を解除する必要がある。


 

当然、InitializeOnLoadを使用しているのでスクリプトを更新したりビルドが走った後に毎回呼ばれるので注意が必要。

起動直後かつプロジェクト読み込み後だけに実行したい場合は、「EditorApplication.timeSinceStartup」で判断できそう。

 

 

 参考

http://docs-jp.unity3d.com/Documentation/Manual/RunningEditorCodeOnLaunch.html

http://answers.unity3d.com/questions/45186/can-i-auto-run-a-script-when-editor-launches-or-a.html