MenuItem是unity自带的特性,利用它我们可以方便的在编辑器里面加加入一些功能,以下是一些常用功能的总结,注意,需要把文件放在Assets下的Editor文件夹下.
using UnityEngine;
using UnityEditor;
using System.Collections;
public class MenuTest : MonoBehaviour {
/// <summary>
/// 增加一个MyMenu菜单下的show选项
/// </summary>
[MenuItem("MyMenu/show")]
static void Show() {
print("haha");
}
/// <summary>
/// 增加一个MyMenu菜单下的printName选项,并且只有选中物体时才可以
/// </summary>
[MenuItem("MyMenu/ShowSelectedName")]
static void PrintName() {
print("Selected Transform name is " + Selection.activeTransform.gameObject.name);
}
[MenuItem("MyMenu/ShowSelectedName", true)]
static bool Validate() {
return Selection.activeTransform != null;
}
/// <summary>
/// 添加一个选项,并且指定快捷方式为ctrl + G,%代表Ctrl键(mac机上面是cmd键) #代表Shirt键 &代表Alt键
/// </summary>
[MenuItem("MyMenu/shortCutKey % g")]
static void DoSomethingWithAShortcutKey() {
print("push down ctrl + g");
}
/// <summary>
/// 给刚体组件的菜单增加一个double选项
/// </summary>
/// <param name="command"></param>
[MenuItem("CONTEXT/Rigidbody/Double Mass")]
static void DoubleMass(MenuCommand command) {
Rigidbody body = (Rigidbody)command.context;
body.mass = body.mass * 2;
print("double mass to " + body.mass);
}
/// <summary>
/// 在GameObject的子菜单下新建目录选项,并设置撤销新建时的提示
/// </summary>
/// <param name="menuCommand"></param>
[MenuItem("GameObject/MyCategory/Custom Game Object", false, 10)]
static void CreateCustomGameObject(MenuCommand menuCommand) {
GameObject go = new GameObject("Custom Game Object");
GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
Undo.RegisterCreatedObjectUndo(go, "Create " + go.name);
Selection.activeGameObject = go;
}
}