Unity脚本声明周期

来源:互联网 发布:淘宝刷店铺收藏有用吗 编辑:程序博客网 时间:2024/06/06 07:35

说明:

图来自官方文档,测试时有点出入

无论是可见物体还是相机的OnRenderObject都是在相机的OnPostRender之后执行


OnPreCullOnPreRender,OnPostRender,OnPostRender,OnRenderImage这几个go上有相机才执行


OnRenderObject 任何激活go都执行,场景中同时有camera和可见go这个函数会在OnPostRender后执行


OnBecameVisible  针对可见go(包含渲染器并激活的go),只要脚本挂上,并实现这个方法,就执行(脚本前面的勾被勾掉时也执行)一次,

如果有相机执行位置是在相机的OnPreCull之后,OnPreRender之前执行


OnWillRenderObject 可见go执行(相机go是不执行的,估计因为不可见),

如果2个相机,1个可见go,go上脚本写了这个,

那么这个函数在一次循环中执行2次(一次循环中对每一个相机都执行一次),而且每次循环都会执行

具体位置在相机的OnPreCull后 相机的OnPreRender前






渲染

  • OnPreCull: 在相机剔除场景之前调用此函数。相机可见的对象取决于剔除。OnPreCull 函数调用发生在剔除之前。
  • OnBecameVisible/OnBecameInvisible: 在对象对于相机可见/不可见时调用此函数。
  • OnWillRenderObject: 如果对象可见,则为每个相机调用一次此函数。
  • OnPreRender: 在相机开始渲染场景之前调用此函数。
  • OnRenderObject: 在完成所有常规场景渲染后调用此函数。此时,可使用 GL 类或 Graphics.DrawMeshNow 绘制自定义几何图形。
  • OnPostRender: 在相机完成场景渲染后调用此函数。
  • OnRenderImage(仅限专业版): 在完成场景渲染后调用此函数,以便对屏幕图像进行后处理。
  • OnGUI: 在每帧上多次调用此函数,以响应 GUI 事件。程序首先将处理 Layout 和 Repaint 事件,然后再处理每个输入事件的 Layout 和 keyboard/鼠标事件。
  • OnDrawGizmos 用于在场景视图中绘制小图示 (Gizmos),以实现可视化目的。

参考资料:

1.Execution Order of Event Functions http://docs.unity3d.com/Manual/ExecutionOrder.html
2.游戏蛮牛Unity 用户文档1.0 http://www.unitymanual.com/m/Manual/index.htm
0 0