Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


软件:unity:executeineditmode

ExecuteInEditMode

用于修饰一个类


首先要区别一些概念:

在Unity软件内,无论是不是运行的状态,都是Unity Editor;与之对应的是,打包之后,就不是Unity Editor。在Unity Editor中,非运行状态就是Edit Mode;运行状态就是Play Mode。

  • Play Mode:游戏运行时
  • Edit Mode:编辑器运行时、游戏非运行

默认情况下,我们自己写的脚本都是在进入Play Mode的时候,才会被按照顺序执行(Start → Update…)。ExecuteInEditMode属性的作用就是让脚本在Edit Mode下也可以被执行。

但是即使是加上了这个属性,Edit Mode和Play Mode中函数的执行方式还是有一些不同,在Edit Mode中,调用规则是这样的:

  • Update:只有当场景中的某个物体发生变化时,才调用。
  • OnGUI:当GameView接收到一个Event时才调用。
  • OnRenderObject和其他的渲染回调函数:SceneVidw或者GameView重绘时,调用。

Awake与Start调用规则:

  • Awake:加载时调用。
  • Start:第一次激活时调用。

在切换模式的时候,Unity会重新加载资源,这时的运行逻辑是:

  • 当该MonoBehavior在编辑器中被赋于给GameObject的时候,Awake、Start将被执行。
  • 当Play按钮被按下游戏开始以后,Awake, Start 将被执行。
  • 当Play按钮停止后,Awake, Start将再次被执行。
  • 当在编辑器中打开包含有该MonoBehavior的场景的时候,Awake, Start将被执行。

需要注意的是,切换模式的时候,进行某些部分的初始化之前,先做好清理工作,自己创建的内存、资源等Unity是不会帮你处理的

/var/www/DokuWikiStick/dokuwiki/data/pages/软件/unity/executeineditmode.txt · Last modified: 2022/11/25 07:43 by zh