之前有提到,引擎中会有一些自动调用的“事件”或“函数”,例如BeginPlay等等。所以当你写好自己的逻辑,却不知道如何启用的时候,往往就可以考虑这些现成的起始点。而本次要说的是常见但也极为重要的“事件Tick”。
事件Tick非常好用,也非常强大,但它强大到有可能会让引擎“心累”的地步。而在说明具体原因前,我们先需要了解什么是“帧”。
这个帧不是指在百度百科查到的所谓“数据帧”的概念,而是在电影,动画等方面来说,帧就等于一张画面,而一张画面到下一张画面,中间的时间间隔就是“帧间隔”。我们应该或多或少见过类似于下面这种翻画
这种由一张一张静止的画面,然后通过手拨翻的方式,从而在我们的视觉里形成了“动画”的效果。这里面每一张画其实就可以理解为“一帧”,而每次手翻(一张画面到下一张画面)的时间,就可以理解为“帧间隔”。我们现在看的电影,动画等任何动态图像其实都是使用了这种方法。
而对打游戏的老铁,更多的了解的是“FPS”这个概念,而FPS就是“一秒内多少帧”的意思。30FPS就是“一秒30帧”,那么帧间隔就是“1秒除以30”约等于0.033秒,也就是33毫秒(记作33ms)。而60FPS自然就是一秒60帧,帧间隔以“1秒除以60”约等于0.016秒,也就是16毫秒(记作16ms)。依次类推到120FPS等等。
说完了帧间隔,就可以回到引擎中的“事件Tick”来了。事件Tick就是在你运行时,每过一个帧间隔,引擎就会调用一次这个Tick事件,就这么简单。
虽然简单,但是它可以帮助你在某一段甚至整个时间内,持续执行某个逻辑流程,从而达到监控整个过程的目的。而这在我们写项目的时候是非常常见的需求,因为有的步骤你需要等待前面某个步骤完成你才能继续,这其中最简单的方法就是用Tick。
然而,有好处自然就有坏处。前面有说到,Tick是一个帧间隔就会调用一次,以常见的一秒60帧为例,那么一秒内,Tick就直接调用了60次。如果只是简单的流程还好,要是一个极其复杂且庞大的流程,这时候你还用Tick,不仅会让你的项目运行起来极其的慢,甚至有可能导致你的电脑系统都卡的飞起。
所以总的来说,Tick虽然好用,但对于电脑的性能消耗也非常大,你总不会希望别人玩着你开发的游戏结果直接把电脑系统给整崩了吧。因此一定要谨慎同时尽量少用Tick,一定要用的话,也要确保Tick的流程尽量简短并且在适当的时候关闭Tick,或者手动调整Tick的帧间隔时间。
如若转载,请注明出处:https://www.mendian6.com/14384.html