本文部分内容参考自这里
在这篇文章中提到过,放在Editor目录下的资源和文件发布时都不会被打包,里面的脚本只会在编辑器中被使用。很多第三方插件扩展了编辑器的功能,所以都会有一个Editor文件夹,这里我想来简单了解一下Unity Editor是如何扩展的。
Editor文件夹中的脚本是不允许挂在GameObject上的,因为在Editor目录下的都被默认为Editor Script.
编写Editor Script的时候不要忘记using UnityEditor.
假设你要为Editor增加快捷打包AssetBundle的功能
public class AssetBundleTry : MonoBehaviour
{
[MenuItem("AssetBundle/CreateAssetBundle",false,1)]
static public void CreateAssetBundle()
{
BuildPipeline.BuildAssetBundles("Assets/AssetBundles", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
Debug.Log("Create");
}
[MenuItem("AssetBundle/CreateAssetBundle",true)]
static public bool CanCreateAssetBundle()
{
return true;//如果 return false这个选项就是灰的
}
}
首先要注意使用MenuItem的方法必须是Static的
MenuItem有三个参数,第一个参数是菜单路径,用/分割,第二个参数指明这个函数是否为验证函数,验证函数为真时这个菜单选项是可选的,否则是灰的,第三个参数是优先级,越小越在上面,而且相邻菜单优先级差距11以上则会被分组,即菜单中多一个分隔线。默认值为1000
可以为菜单添加快捷键
◾%— — 在 Windows 上的 CTRL / CMDOSX 上
◾#— — Shift
◾&— — Alt 键
◾LEFT/RIGHT/UP/DOWN---—Arrow箭头键
◾F1......F2 — — F键
◾HOME, END,PGUP, PGDN
[MenuItem("AssetBundle/CreateAssetBundle1 #&a", false, 70)]
static public void CreateAssetBundle1()
{
Debug.Log("Create 1");
}
上面这个例子菜单选项上面就会写快捷键是CTRL+SHIFT+A,如果是单独按键的快捷键,注意添加下划线,比图“AssetBundle/CreateAssetBundle1 _a ”表示按A触发该功能。
类似的,也可以在右键Hierarchy以及Asset的弹出菜单中添加自定义的菜单项,只需
[MenuItem("GameObject/Test2", false)] //Gameobject菜单的选项和右键Hierarchy的选项是一样的
public static void PasteTRValue()
{
Debug.Log("Test2");
}
[MenuItem("Assets/Test3", false)]
public static void Test3()
{
Debug.Log("Test3");
}
如果想在Inspector窗口中添加菜单,需要指定在某特定的Component添加“
[MenuItem("CONTEXT/ComponentName/ItemName")”,比如像要右键transform组件的时候添加菜单,则需
[MenuItem("CONTEXT/Transform/Test4")]
public static void Test4()
{
Debug.Log("Test4");
}
以上代码给Transform脚本添加了一个右键菜单。想要给所有脚本都添加,可以在Object上添加菜单。
网友评论