Unity 编辑状态下执行一个方法

    Unity 给我们提供了很多方便开发的特性,本文将会介绍 一个比较常用的特性 :ContextMenu   .

    ContextMenu特性常用于编辑模式下场景数据的设置.  举个例子:   Unity 编辑状态下执行一个方法_第1张图片

    “Objects”组下有10个子物体,每个物体身上挂了一个"ObjectData"组件。

       假设目前的需求是:1.在编辑模式下把每个物体“ObjectData”组件上的CubeID设置成跟物体名字索引相对应;

       2.把每一个物体的 x 轴坐标都间隔为 1 排开。

       一种方法就是手动去设置,但这太麻烦,如果是1000个物体就没完没了了。    这里就可以用ContextMenu 特性去实现。


       创建一个SetData脚本组件,挂在到“Objects”物体上:Unity 编辑状态下执行一个方法_第2张图片


代码如下 :


Unity 编辑状态下执行一个方法_第3张图片


之后右键点击“Objects”上的“SetData”脚本组件,就会发现菜单中多了一行“SetData”项目。  点击“SetData”即可完成设置.

Unity 编辑状态下执行一个方法_第4张图片


最终效果:


Unity 编辑状态下执行一个方法_第5张图片



    在开发过程中,如果场景较大,点击运行往往需要等待好几秒,ContextMenu特效也可以让我们在编辑模式下(非运行)执行一些方法。

     注:使用编辑器类Editor里面的MenuItem特性也可以达到创建实例、设置数据等目的,一个比较主要的区别是 :ContextMenu 作用的方法所在的类是可以继承自MonoBehaviour的,也就是说使用ContextMenu可以实现 如 :在编辑模式下让物体实现  transform.LookAt()、transform.Translate()等方法。


你可能感兴趣的:(Unity3D)