Unity脚本开发(回调函数)
回调函数
在Unity中一共提供了18个回调,但是在平时开发时基本上只要使用部分。
首先在我们创建Unity脚本时,在以前的版本还有其他像是C++的选项,但是在最近的开发中,基本上大部分的开发者都习惯于使用C#去开发所以Unity官方也就只留下了C#者一个选项。
在我们创建并进入时,可以发现与在VS中的C#脚本不同,在Unity中创建打开的脚本并没有main函数,取而代之的是两个函数,Start()和Update()。这两个我们第一次见到的函数便是回调函数,也是我们最常用的回调函数。
那我们现在开始讲解回调函数
游戏开始时调用。
在我们第一次见到的函数中有Start()函数,而这个函数就是在游戏开始时调用一次,就像是初始化一样,在这之后都不会再次调用,除非是重新再次打开游戏。
当然在此之中也有其他在游戏开始时调用的函数,Awake()也是相同作用,在游戏开始时调用一次,但是与Start()函数不同的是,Start()函数会在Awake()函数调用之后再次调用。而Awake()是在游戏启动时最先运行的回调函数。
还有与这些类似的函数,像是OnEnable(),OnEnable()的作用是在在脚本组件被设置成可用时,调用一次,而在游戏开始时都会调用脚本,所以说在游戏开始时都会进行调用。当然关于Awake(),OnEnable(),Start()的调用顺序即是Awake(),OnEnable(),Start()。但是Awake()和Start()函数在游戏中都只会使用一次,OnEnable()可以在其他的指令下进行多次调用。
持续调用。
我们经常会听到FPS这一概念,即是每一秒的帧数,我们的游戏也是以一秒播放多个画面来进行对视觉的欺骗,使我们认为当前使一个流畅的画面。
在Unity中会有在每一帧都调用的函数,即是Update(),和LateUpdate(),在名字上就可以听出这两个函数的区别,虽然同为每帧调用一次,但是LateUpdate()会比Update()推迟调用。在我们像是移动的这一方面,我们就需要每一帧都调用一次,在每一帧都得到物体的位置,并且跟新下一帧的位置。LateUpdate()我们可以使用到第三人称的摄像机上,在获取了位置后,对摄像机的位置进行即时的调整。
与之类似的,当我们的电脑有硬件上的差异,所以可能会导致每个电脑的帧数都不尽相同,所以Unity提供了以时间为间隔的回调函数FixedUpdate(),FixedUpdate()函数与其他函数最大的特色就是以时间为间隔调用,而不是以帧的时间。所以我们可以自由的设置其调用的频率,当然Unity会有一个默认的时间间隔,即为0.02s
最后一个类似的是,OnGUI(),这个函数会在一帧内调用两次。
收尾工作。
在我们的游戏中常常会有不需要的物体,像是在被击败以后的小兵,这时候就需要有函数调用来解决后事,像是使小兵的模型消失等。
在Unity中OnDisable()和OnDestory()就是做这种收尾的工作的。
在物体的脚本组件被禁用或设置成不可用时,会调用一次OnDisable(),就如OnEnable()一样,可以靠多次禁用来多次触发。
而在物体组件被销毁时或者是整个游戏对象被销毁时,会调用一次OnDestory(),当然了,在物体组件被销毁时也会同时调用一次OnDisable(),因为他也被设置成了不可用。
|