我目前正在編寫一個簡單的遊戲,以瞭解如何在C++中使用SFML。到目前爲止,事情進展順利,我對SFML的大部分事情有了基本的瞭解。我遇到的問題是找到一種有效的方法和基於時間的事件。基於時間的事件處理
我正在製作的遊戲是一個非常簡單的太空侵略者式的遊戲,在關卡中有預定義的時間有敵人進來。到目前爲止,我有一個事件類來保存和控制每個被調用的事件應該發生的事情,以便讓我重複使用簡單的事件多次。到目前爲止,我通過循環利用SFML cloock來觸發這些事件,並且通過遍歷當前級別的所有事件的向量的遊戲循環的每次迭代,並將時鐘的經過時間與事件的指定時間叫做。問題是,我必須在每個遊戲循環迭代中檢查整個事件向量,並且如果事件列表足夠長,我擔心它會開始對遊戲的性能產生影響。
我有一個想法,爲每個事件提供一個簡單的數字ID作爲它在時間軸上的位置,並簡單地存儲下一個應該運行的事件,那樣我只需要檢查每個循環迭代中一個事件的時間,並且雖然這將工作得相當好,我想,我很好奇,如果一個更有效的方法,不需要檢查每個循環迭代是可能的?我看了一下事件驅動編程,但找不到與基於時間的事件有很大關係。
因此,我想知道是否有人有時間軸或基於時間的事件觸發的任何經驗,並會有任何提示或資源,我可以看看找出一個更有效的想法?任何幫助將是偉大的,謝謝!
事件應該在**處運行的時間是其ID,不需要另一個數字(除非您需要其他用途)。 – 2012-04-04 17:06:39
保持事件列表按時間排序,因此您只需查看第一個條目即可。 – 2012-04-04 17:15:23