Unity的几种编辑模式下运行脚本的特性 - chunlieater/chunlifeet GitHub Wiki
如果想让脚本在unity的编辑模式下运行,有几种特性可以使用:
- MenuItem是unity自带的特性,利用它我们可以方便的在编辑器里面加加入一些功能,以下是一些常用功能的总结,注意,需要把文件放在Assets下的Editor文件夹下.
- ExecuteInEditMode属性的作用是在EditMode下也可以执行脚本。Unity中默认情况下,脚本只有在运行的时候才被执行,加上此属性后,不运行程序,也能执行脚本。
与PlayMode不同的是,函数并不会不停的执行。
Update : 只有当场景中的某个物体发生变化时,才调用。
OnGUI : 当GameView接收到一个Event时才调用。
OnRenderObject 和其他的渲染回调函数 : SceneVidw或者GameView重绘时,调用。
Awake与Start调用规则:
Awake:加载时调用。
Start:第一次激活时调用。
这个与运行模式下的调用规则一致。参见《unity-----函数执行顺序》。
需要注意的是,由于在两种模式下都可以运行,所有,切换模式的那一刻,值得我们留 意一下。 不管是从编辑模式进入运行模式,还是从运行模式进入编辑模式,unity都会重新加载资源,所以:
当该MonoBehavior在编辑器中被赋于给GameObject的时候,Awake, Start 将被执行。 当Play按钮被按下游戏开始以后,Awake, Start 将被执行。 当Play按钮停止后,Awake, Start将再次被执行。 当在编辑器中打开包含有该MonoBehavior的场景的时候,Awake, Start将被执行。
- Unity 给我们提供了很多方便开发的特性,本文将会介绍 一个比较常用的特性 :ContextMenu ,注:使用编辑器类Editor里面的MenuItem特性也可以达到创建实例、设置数据等目的,一个比较主要的区别是 :ContextMenu 作用的方法所在的类是可以继承自MonoBehaviour的,也就是说使用ContextMenu可以实现 如 :在编辑模式下让物体实现 transform.LookAt()、transform.Translate()等方法。