Unity 编辑状态下执行一个方法
2016-11-05 11:38
746 查看
Unity 给我们提供了很多方便开发的特性,本文将会介绍 一个比较常用的特性 :ContextMenu .
ContextMenu特性常用于编辑模式下场景数据的设置. 举个例子:
“Objects”组下有10个子物体,每个物体身上挂了一个"ObjectData"组件。
假设目前的需求是:1.在编辑模式下把每个物体“ObjectData”组件上的CubeID设置成跟物体名字索引相对应;
2.把每一个物体的 x 轴坐标都间隔为 1 排开。
一种方法就是手动去设置,但这太麻烦,如果是1000个物体就没完没了了。 这里就可以用ContextMenu 特性去实现。
创建一个SetData脚本组件,挂在到“Objects”物体上:
代码如下 :
之后右键点击“Objects”上的“SetData”脚本组件,就会发现菜单中多了一行“SetData”项目。 点击“SetData”即可完成设置.
最终效果:
在开发过程中,如果场景较大,点击运行往往需要等待好几秒,ContextMenu特效也可以让我们在编辑模式下(非运行)执行一些方法。
注:使用编辑器类Editor里面的MenuItem特性也可以达到创建实例、设置数据等目的,一个比较主要的区别是 :ContextMenu 作用的方法所在的类是可以继承自MonoBehaviour的,也就是说使用ContextMenu可以实现 如 :在编辑模式下让物体实现 transform.LookAt()、transform.Translate()等方法。
ContextMenu特性常用于编辑模式下场景数据的设置. 举个例子:
“Objects”组下有10个子物体,每个物体身上挂了一个"ObjectData"组件。
假设目前的需求是:1.在编辑模式下把每个物体“ObjectData”组件上的CubeID设置成跟物体名字索引相对应;
2.把每一个物体的 x 轴坐标都间隔为 1 排开。
一种方法就是手动去设置,但这太麻烦,如果是1000个物体就没完没了了。 这里就可以用ContextMenu 特性去实现。
创建一个SetData脚本组件,挂在到“Objects”物体上:
代码如下 :
之后右键点击“Objects”上的“SetData”脚本组件,就会发现菜单中多了一行“SetData”项目。 点击“SetData”即可完成设置.
最终效果:
在开发过程中,如果场景较大,点击运行往往需要等待好几秒,ContextMenu特效也可以让我们在编辑模式下(非运行)执行一些方法。
注:使用编辑器类Editor里面的MenuItem特性也可以达到创建实例、设置数据等目的,一个比较主要的区别是 :ContextMenu 作用的方法所在的类是可以继承自MonoBehaviour的,也就是说使用ContextMenu可以实现 如 :在编辑模式下让物体实现 transform.LookAt()、transform.Translate()等方法。
相关文章推荐
- android中多个fragment切换时如何避免重复执行onCreateView方法,如何保存上一个fragment的状态
- Unity获取object所有属性的一个方法,一些界面上没有开放的属性可以用该方法编辑
- 一个伟大的发现,装X一下。笔记本win7系统64位机器执行unity 时,屏幕模糊解决的方法
- 讨论:一个类的方法应该使用返回值来标识执行状态,还是抛出异常?
- Winform界面中欠套了一个EXCEL模板提示文件处于编辑状态. 解决方法
- CLR 无法从 COM 上下文 0x1a2740 转换为 COM 上下文 0x1a28b0,这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作
- 如何中止一个正在执行中的方法(求助)
- 编辑一个小程序,让人开机进不了电脑,这个方法能行吗?大家说说,我认为是骗人的吧
- ASP.NET 2.0 GridVieW中控制一个DropDownList在编辑状态时出现对应值
- Flex中如何给DataGrid控件的项目添加一个可编辑TextArea/TextInput,单击控件内的项目时,自动进入编辑状态
- 一个sql语句实现状态来回变化的方法
- 在flex中执行一个javascript方法的简单方式
- 一个button同时执行多个有返回值的函数的解决方法(return false; or return true;)
- 在flex中执行一个javascript方法的简单方式
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到
- 如何查看,当运行一个hibernate 方法后到底执行了哪些SQL语句
- 需要开发一个合同执行状态系统
- 在DELPHI中调用一个可执行程序得方法
- DOS:求一个能取当前执行的bat文件所在目录方法。
- 转--一个解除TCP连接的TIME_WAIT状态限制的简便方法