美文网首页
Unity Editor 扩展

Unity Editor 扩展

作者: XY9264 | 来源:发表于2019-04-08 17:23 被阅读0次

    本文部分内容参考自这里
    这篇文章中提到过,放在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上添加菜单。

    相关文章

      网友评论

          本文标题:Unity Editor 扩展

          本文链接:https://www.haomeiwen.com/subject/qhqpiqtx.html