美文网首页
Unity编辑器类

Unity编辑器类

作者: AngerCow | 来源:发表于2017-11-16 10:18 被阅读0次

    添加方法到相应的菜单栏
    using UnityEngine;
    using UnityEditor;
    public class Tools {
    [MenuItem("Tools/Test")]//通过MenuItem[“路径”]添加到相应菜单栏
    static void Test() {//编辑器类的方法必需是static修饰,方法名是唯一的。
    Debug.Log("Test");
    }
    }
    编辑器中的分组
    [MenuItem("Tools/Show Info",false,1)]
    //其中有三个参数,第一个为路径,第二个为是否启用菜单项,第三个为优先级
    ** 系统默认的优先级是1000
    分组的条件是第三个参数相差11,这个数值是为变的,固定要相差这么多

    第二个参数的使用:
    //TestDeleteBool方法为验证TestDelete方法是否可以运行。
    //方法名不同,第二个参数要为true,其它要保持一致辞
    [MenuItem("GameObject/Test Delete", true, 10)]
    static bool TestDeleteBool()
    {
    if (Selection.objects.Length > 0)
    {
    return true;
    }
    else
    {
    return false;
    }
    }
    [MenuItem("GameObject/Test Delete", false, 10)]
    static void TestDelete() {
    foreach (Object o in Selection.objects)
    {
    Undo.DestroyObjectImmediate(o);
    }
    }
    添加方法到组件的右键菜单栏
    using UnityEngine;
    using UnityEditor;
    public class PlayerEditor {

    [MenuItem("CONTEXT/Rigidbody/Clear")]//CONTEXT/加组件名/加按扭名
    static void ClearMassAndGravity(MenuCommand cmd)
    {//MenuCommand为当前操作的组件
        Rigidbody rgd = cmd.context as Rigidbody;
        rgd.mass = 0;//更改组件上的变量值
        rgd.useGravity = false;
    }
    

    }
    Selection(选择)类的应用
    [MenuItem("Tools/Show Info",false,1)]
    static void ShowInfo() {
    Debug.Log(Selection.activeGameObject.name);//多选时只会得到第一个选择的物体(只在Hierarchy面板中有效)
    }
    具体参见API
    撤消的类Undo
    [MenuItem("GameObject/Test Delete", false, 10)]
    static void TestDelete() {
    foreach (Object o in Selection.objects)
    {
    Undo.DestroyObjectImmediate(o);//利用Undo进行删除操作是可以撤消的
    }
    }
    给菜单添加快捷键
    %代表Ctrl,#代表Shift,&代表alt
    [MenuItem("Tools/Test t", false, 10)]//纯字母加字母就可以添加快捷键
    [MenuItem("Tools/Test %t", false, 10)]//组合键加字母添加快捷键
    关于ContextMenu和ContextMenuItem的使用
    ContextMenu非UnityEditor下,直接写在非系统组件上的右键按扭。
    [ContextMenu("SetColor")]//传入一个方法名
    void SetColor() {
    flashColour = Color.green;
    }
    ContextMenuItem在脚本中给变量添加右键菜单按扭
    [ContextMenuItem("AddHp", "AddHp")]//第一个参数为按扭名,第二个为方法名,方法一定要存在
    public int startingHealth = 100;
    void AddHp()
    {
    startingHealth += 20;
    }
    创建窗口
    创建窗口要继承ScriptableWizard

    ScriptableWizard.DisplayWizard<Windows>("修改窗口","Change Value");//第一个参数为标题,第二个参数为按扭名称
    添加检测方法
    //检测Create按扭的点击,方法名必须是OnWizardCreate
    void OnWizardCreate() {
    Debug.Log("Done");
    }

    相关文章

      网友评论

          本文标题:Unity编辑器类

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