之前有提到,引擎中會有一些自動調用的“事件”或“函數”,例如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的幀間隔時間。
如若轉載,請注明出處:http://www.cananla.cn/14384.html