unity脚本编辑器(一)

在菜单栏添加按钮

新建脚本,无需继承mono,start update方法,引用命名空间usingUnityEditor;

定义按钮    

菜单栏显示名称/按钮名称, MenuItem可以在任何脚本内使用

 [MenuItem ("Testbtn/test/test1")]
        static void test0()
{                                             
           Debug.Log("测试0,,");
  }	
 [MenuItem("Testbtn/test/test2")] //设定一个按钮都要添加对应的方法
       static void test1() //名字不能相同,以上两种设置了同意父层级test下的两个按钮
        {
           Debug.Log("测试2,,");
        }

我们发现unity会对按钮有分类,用横线分开,自己设置的方式如下:

      [MenuItem("Testbtn/test/test2", false,1)]  

第三个参数为显示顺序,值越小就越靠上,当相邻两个按钮的值相差大于11就会分类,用横线分开

 在组件右键内添加按钮

     [MenuItem("CONTEXT/test/UnLog",false,1)]//context大写,组件名,脚本名


 [MenuItem("CONTEXT/Rigidbody/Initdefult")]//右键rigidbody组件,自行设置初始
    static void test3(MenuCommand cmd)//menucommand 是当前正在操作的组件,不需要传参
    {                    
        Rigidbody rigi = cmd.context as Rigidbody;//as比用括号更温和,失败时返回空值
        rigi.useGravity = false;    //不适用重力,摩擦力为0
        rigi.mass = 0;
}
foreach (GameObject  item in Selection .objects  )//对选中物体操作
        {
            Debug.Log(item.name);
            GameObject.DestroyImmediate (item);//删除选中物体,无法撤销
            //Undo.DestroyObjectImmediate(item);//可撤销的删除
    }
}

菜单栏添加快捷键  %代表Ctrl  #代表shift  &代表alt

  [MenuItem("Testbtn/test/test1 _t")]按下t就可以执行按钮对应操作

  [MenuItem ("Testbtn/test/test1&t")]按下alt+t执行

菜单项是否启动

 第二个参数,对应方法为验证方法,值为true,需要返回一个bool值,为true这可以点击反之则不

 能,要路径一致,仅作判断,当返回true,相同路径的按钮即可点击

 [MenuItem("Testbtn/test/test2", true ,1)]//当show()方法返回true,test2方可点击
    static bool  show()
    {
        if (Input.GetKey(KeyCode.A)) return true;
        return false;
    }
  [MenuItem("Testbtn/test/test2", false,1)]  
static bool  test2()
    {
       Debug.Log("测试2,,");
    }

ContextMenu  在自己的脚本中添加右键按钮,在脚本内,方便访问该脚本的属性等

可以定义上下文菜单,和使用 MenuItem 并以“ Context/ 。。”定义菜单一样这个属性不同的是,你能给指定的组件定义默认的上下文菜单项,然而使用 MeneItem 只是为了扩展现有的组件菜单,比如引擎默认的组件。
public class NameBehaviour : MonoBehaviour
{
    public string Name;
    [ContextMenu("Reset Name")]
    private static void ResetName()
    {
        Name = string.Empty;
    }
}

ContextMenuItem  给脚本属性添加右键,

被添加到了一个字段上没有方法,所有它接受两个参数:一个用于显示菜单项的名字,一个用于指定一个当菜单被选中时要调用的实例方法。

 public class NameBehaviour : MonoBehaviour
{                      //    按钮名字            方法名字           
    [ContextMenuItem("Randomize Name", "Randomize")]
    public string Name;

    private void Randomize()
    {
        Name = "Some Random Name";
    }
}

上面代码的结果显示了当在字段上单击右键时弹出的菜单项:



下载文档点击这里 https://download.csdn.net/download/nt_xs_j/10503003






猜你喜欢

转载自blog.csdn.net/nt_xs_j/article/details/79579513