Unity3D脚本执行方法的顺序

1.编译器阶段

Reset方法:当脚本第一次添加到游戏对象活当执行Reset命令时回调用Reset方法,用来初始化脚本的各个属性

2.场景第一次加载阶段

该阶段其实也就是脚本第一次加载的阶段,一下两个方法会在脚本第一次加载时被调用
Awake方法:在Start方法之前调用,换句话,就是在prefab(预设)刚刚实例化后边调用该方法
OnEnable方法:这个方法在对象可用之后被调用,需要注意的时,仅在对象激活状态下可用,也就是当一个MonoBehaviour实例被创建时可用,例如当加载一个或一个拥有该组件的游戏对象被实例化时
再次需要特别说明的一点,当前游戏场景中所有对象的Awake和OnEnable 会在所有的Start、Update之前调用

3.第一帧更新之前

在该阶段,也就是Awake之后、Update之前,Unity回调用Start方法

以上三个方法,完成了unity对象的初始化工作

4.执行阶段

该阶段就是当前帧执行完毕,需要开始执行下一帧的阶段,在该阶段有可能被触发的方法是,OnApplicationPause方法
OnApplicationPause方法:当检测到暂停状态时,会在前帧结束之后调用该方法

5.更新顺序

FixedUpdate方法:在unity中,FixedUpdate方法可能比按帧执行的Update执行的次数还要多,频率可能更频繁,这是由于当前帧率交第的时候,该方法每一帧回呗调用多次,如果帧率较高的时候,此函数可能执行的就比较少了,这是因为Fixed时基于可靠的计时器,不受帧率的影响,所以要注意,FixedUpdate方法主要是用来处理物理相关的计算,例如处理刚体
Update方法:在游戏运行期间,每一帧都会调用这个方法,也就是游戏逻辑按照帧来更新的主要方法。
LateUpdate方法:这个方法在Update方法执行之后,LateUpdate也是每一帧都会调用,在Update中执行的任何计算都会在LateUpdate开始之前完成,LateUpdate的一个常见应用就是第三人称控制器的相机跟随,如果将角色的移动和旋转放在Update中,那么就可以把相机跟随的逻辑放在LateUpdate 中,详细的说使用LateUpdate是处理发生在Update之后,相机渲染之前的逻辑

6.协程部分(协程是类多线程,实际上还是在主线程中执行)

正常情况下协程实在Update函数返回时执行的,而协程的主要功能是延缓其执行,直到给定的YiedInstruction完成
而根据应用场景的不同,u3D中的协程也有几种不同的使用方法

1.yield:当下一帧所有的Update方法被调用之后,协程继续执行
2.yield WaitForsends:等待指定时间之后执行,可以实现延时机制
3.yield WaitForFixedUpdate:在所有脚本中的FixedUpdate执行结束之后执行
4.yield WWW :在WWW加载完成之后继续执行
5.yield StartCoroutine(MyFunc):用于链接协程,将等待参数所指协程完成之后再执行

总结:

1.所有Awake方法
2.调用所有Start方法
3.游戏逻辑循环(物理部分,主要根据设定时间的时间间隔来确定)
1)调用所有的FixedUpdate方法
2)物理模拟
3)OnEnter、Exit、Stay等触发函数
4)OnEnter、Exit、Stay碰撞函数
4.刚体插值,主要作用于位置transform.position和角度transform.rotation
5.OnMouseDown、OnMouseUp等输入事件
6.所有Update函数
7.高级动画、混合并应用到变化
8.所有LateUpdete
9.渲染
10.对象销毁或者退出场景

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值