按照执行顺序从高到低排序
1.Reset()(不常用):此函数是用户首次为游戏对象添加带有该函数的脚本或者用户单击Reset按钮时调用,也就是说该函数是在把脚本挂载到游戏对象上时就生效,一般不常用,一般课用来批量生成游戏对象
2.Awake():该函数在脚本对象实例化时就立即调用,换句话说,对象初始化之后第一调用的函数就是Awake,当一个游戏对象上挂载了多个脚本,都带有awake,它是乱序的,没有固定顺序执行
3.onEable()(不常用):脚本被启用时调用一次
4.Start():则Start函数在第一帧更新之前被调用,意思就是在创建出游戏对象后,在第一帧刷新前被调用(也就是在update执行之前调用之前)
注意: Awake()和Start()存在一定的区别,在研究区别时,结合实际案例,更好理解;比如在我们需要做发射子弹时,这个时候有一个发射者(大多数是玩家),还有一个子弹,两个游戏对象,那么发射者会挂载一个控制脚本,子弹会挂载一个脚本(一般子弹脚本里面还会有个发射函数,一般是用刚体中的addforec给刚体一个带有方向的力表示发射它),那么发射的时候,是要在控制玩家的脚本中生成一个子弹游戏对象(也就是Instantiate方法,该方法是实例化一个游戏对象,这里就是子弹),然后再利用该对象获取子弹的脚本,最后调用子弹的发射方法,接下里用截图演示
讲解完成玩家和子弹的关系 才能更好解释awake和start(这里的制作发射子弹篇后面单独做,这里不详细讲解),还有一点Awake不管脚本是否enabled都会被调用;而Start如果对象被SetAcive(false)或者enabled= false了是不会被 调用的。
awake和start的区别
5.FixedUpdate():物理更新函数,不受电脑性能影响,每0.02秒(这里可以理解为每帧花0.02秒)更新一次(时间可以在首选项中进行更改)(FixedUpdte固定时间可修改: Edit-> Project Setting-> Time-> Fixed TimeStep)
6.Update():更新函数,每帧执行一次,受电脑性能影响
7.LateUpdate()(不常用):稍后更新函数,在每次Update函数更新完后立即更新,时间间隔和Update一样
8.OnGUI()(不常用):在渲染和处理GUI事件时被调用,每帧都执行
9.Ondisable()(不常用):当脚本被禁用时调用-次,当脚本反复被禁用或启用,则反复调用OnDisable和OnEable
10.OnDestory():当脚本被销毁时披调用,只会在被激活的物体上调用
最后附上一张详细图