游戏的本质是一个死循环,每一次循环处理游戏逻辑就会更新一次画面(加载一帧),之所能看到画面在动是因为切换画面的速度达到一定时人眼就认为画面是流畅的,一帧就是执行一次循环。
Unity底层已经做好了死循环,我们只需要学习Unity的生命周期函数,利用它做好的规则来执行我们的游戏逻辑就行了。脚本中的生命周期函数就是依赖该脚本的GameObject对象从出生到消亡整个生命周期中通过反射自动调用的一些特殊函数。Unity帮助我们记录了一个GameObject对象依附了哪些脚本,会自动得到这些对象,通过反射去执行一些固定名字的函数。Unity加载每一帧时会自动调用脚本的生命周期函数。
生命周期函数:
(1)Awake():当对象被创建时调用(创建即关联GameObject),类似于构造函数
(2)OnEnable():依附的GameObject对象每次激活时调用
(3)Start():只调用一次,在Awake()之后执行,在第一次帧更新前执行
(4)FixeUpdate():主要用于物理更新,每一帧都执行,但两次执行的间隔时间可以设置
菜单Edit->Project Settings->Time,执行在LateUpdate()之后
(5)Update():每帧执行,主要用于处理游戏核心逻辑更新的函数
(6)LateUpdate():用来处理摄像机位置更新相关内容,在Update()和LateUpdate()执行执行了一些操作
(7)OnDisable():对象失活时调用,执行对象失活时需进行的操作
GameObject对象激活和失活可以通过选中对象,在Inspector里的“勾”来设置,有“勾”激活,无勾失活。