MonoBehaviourは通常、Playモードのみで実行される。
Playモードとは再生ボタンが押下され実行されている状態のこと。
ExecuteInEditMode属性を追加するとPlayモードでないとき(==Editモード)にスクリプトを実行できるようになる。
TestEditMode.cs
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class TestEditMode : MonoBehaviour {
void Start() {
Debug.Log("Start");
}
void Update() {
Debug.Log("Update");
}
void OnGUI() {
Debug.Log("OnGUI");
}
void OnRenderObject ()
{
Debug.Log("OnRenderObject");
}
}
公式ドキュメントをみる限りだと、Editモード実行できるものは
- Update
- OnGUI
- OnRenderObject
の3つのようみたい。
Update
シーンの中で何か変更があったときに実行される。
OnGUI
ゲームビューがイベントを受け取ったとき実行される?
OnRenderObject
シーンビューやゲームビューが描画されるたびに実行される。
上のUpdateとOnGUIのログをみるとこのメソッドが実行されていることがわかります。
とりあえず、なんか描画されれば実行される。