Unity编辑器扩展

Unity编辑器扩展是扩展Unity菜单功能,也可以说是自定义Unity菜单,以此来便利我们能够更快捷地开发游戏。

自定义菜单方法:1.创建一个文件夹Editor

                           2.在该Editor文件夹下,创建一个C#脚本,无需继承于任何类。

                           3.引用UnityEditor命名空间

                           4.写静态方法即菜单的功能

                           5.给该静态方法添加[MenuItem("")]特性

举例说明:

功能1:在游戏物体身上挂载的组件上设置自定义菜单(右击组件即可弹出该自定义菜单)

using UnityEditor;//[使用下面特性的所需命名空间]

  //CONTEXT + 组件名(脚本也是一个组件) + 右击组件后弹出的菜单列表中添加的新菜单InitHealthAndSpeed

    [MenuItem("CONTEXT/组件名/菜单名")]

 static void Xxx(MenuCommand cmd){

    //通过cmd.context获取组件,需要通过as 将其转换为相应的组件类型才能使用,例如:

    //上面的特性组件名为Rigidbody,则需要这样获取该菜单对应的rigidbody组件

    Rigidbody rb=cmd.context as Rigidbody;

//上面将该菜单对应的组件转为Rigidbody,为什么转为Rigidbody而不是其他的,因为该菜单弹出来的地方就是你右击该物体的Rigidbody组件而弹出来的,这里获取到该物体的rigidbody组件后可以对该组件进行修改属性。
//同样地,脚本也可以这样获取,同样需要使用as 脚本名 来转化为相应脚本 才可以对脚本进行一些操作。
}

功能2:在Unity菜单栏上显示自定义菜单,也可以叫做自定义公有菜单,一般设置这种类型菜单都是影响多个物体的,例如:删除Hierarchy中存在的某种类型的全部物品,或者修改某些物体的Xxxx组件等等都可以做到。

1.[MenuItem("Window/mytool/test1")]//在Unity的Window菜单下自定义了一个mytool菜单子项,mytool下有test1,菜单的功能就是该特性所作用于的静态方法。如果你不加Window,就会在Unity菜单栏上创建一个新的mytool菜单项

2. [MenuItem("GameObject/mytool1",false,10)]

这种特性的写法和上面差不多,在GameObject菜单下自定义mytool1菜单,第二个参数为是否验证方法,这里为false即不是验证方法,什么是验证方法下面会说,第三个参数代表菜单优先级,其实就是菜单mytool1所在GameObject菜单下拉列表的所在位置而已。

3.[MenuItem("GameObject/mytool1",true)

与2差不多一样,第二个参数为true说明该特性所作用于的方法是一个验证方法,是执行上面的非验证方法之前的所调用的方法,意思就是当你点击mytool1的时候会先执行这个验证方法,等验证方法返回true后才会执行mytool1对应的非验证方法,不加第二个参数都会默认为非验证方法,没有验证方法的菜单会直接成功调用菜单对应的非验证方法。

上已经说了非验证方法是有返回值bool的,所以非验证方法必须是 static bool Xxxx(){ }

菜单快捷键的设置方法:@ alt # shift % ctrl

例如: [MenuItem("GameObject/mytool1 @T",false,10)] 可直接按Alt+T 使用mytool1菜单

其他用法:#@Q     (shift+alt+Q)   ,    %@Q  (ctrl+alt+Q)  ... ...


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值