awake()和start()还有update(),fixedupdate()的差别

时间:2021-09-21 19:26:13

awake()和start()还有update(),fixedupdate()的差别

1.首先看一下untiy官方对awake()和start()的定义

awake()和start()函数会在脚本加载后自动调用,awake()会先被调用,即使脚本未被调用。最好用来设置脚本之间的引用和初始化。

而start()在awake()之后调用,在第一次调用update()之前,但必须是脚本已经被启用的情况下,也就是说start()中写脚本启用后需要执行的操作,你也可以把一些初始化代码放在这里。

举个栗子,比如一个敌人进入场景,你可以用awake()设置子弹数量,然后在start()中启用敌人的射击功能,也就是在脚本启用后。(注:start和awake只能在脚本生命周期中调用一次)

总结:所以在进入脚本前我们可以用awake()函数进行初始化,这样就不用在脚本中进行分别设置了,而start()方法用于脚本开始执行时需要的功能。

2.关于update()和fixedup()的区别

update()应该是unity中最常用的函数,使用这个函数的脚本每一帧都会自动调用,大部分需要周期性改变的内容都放置在这个函数中,非物理对象的移动,计时器,输入检测,通常都放在update()中,注意update()并不根据正常的时间轴调用,如果某一帧使用的时间大于下一帧,那么每帧调用的间隔将不同,update()和fixedupdate()不同,但是有几个重要的区别,fixedupdate()根据正常的时间轴调用,且每次调用的间隔都是相同的,在调用fixedupdate()函数之后会进行需要的物理计算,比如有刚体的物理对象,需要放在fixedupdate()中,fixedupdate()常用于移动物理对象。