n-yoda's blog

主にUnity3Dに関するあんまり技術的じゃないメモ的な何かを書いています。

ちょっとしたテストに便利なAttribute(ContextMenu、MenuItem)

Unityには便利なAttributeがいくつか用意されています。
EditorのAttributeはこちら

よく使うものを2つ紹介します。

public class Example : MonoBehaviour
{
	[ContextMenu("Print Velocity")]
	void PrintVelocity ()
	{
		print (rigidbody.velocity);
	}

	[UnityEditor.MenuItem("Test/Hello")]
	static void TestMenu ()
	{
		Debug.Log ("Hello World!");
	}
}


[ContextMenu("Print Velocity")]

これを書くことで、Inspectorのコンポーネント名の辺りの右クリックメニューに「Print Velocity」が追加されます。
実行中、編集中ともにそのメソッドが実行できるのでちょっとしたテストや、パラメータ調整の自動化などに使えます。

[UnityEditor.MenuItem("Test/Hello")]

こちらは、アプリケーションメニューに指定した名前のメニューが登録されます。
staticなのでインスタンスに依存する内容は書けません。
MonoBehaviourより、EditorWindowを継承しているときに使うことのほうが多いです。
UnityEditor.Selection等と組み合わせていろいろ面白いことが出来るのですが、それはまた別の記事で。