我目前正在编写一个简单的游戏,以了解如何在C++中使用SFML。到目前为止,事情进展顺利,我对SFML的大部分事情有了基本的了解。我遇到的问题是找到一种有效的方法和基于时间的事件。基于时间的事件处理
我正在制作的游戏是一个非常简单的太空侵略者式的游戏,在关卡中有预定义的时间有敌人进来。到目前为止,我有一个事件类来保存和控制每个被调用的事件应该发生的事情,以便让我重复使用简单的事件多次。到目前为止,我通过循环利用SFML cloock来触发这些事件,并且通过遍历当前级别的所有事件的向量的游戏循环的每次迭代,并将时钟的经过时间与事件的指定时间叫做。问题是,我必须在每个游戏循环迭代中检查整个事件向量,并且如果事件列表足够长,我担心它会开始对游戏的性能产生影响。
我有一个想法,为每个事件提供一个简单的数字ID作为它在时间轴上的位置,并简单地存储下一个应该运行的事件,那样我只需要检查每个循环迭代中一个事件的时间,并且虽然这将工作得相当好,我想,我很好奇,如果一个更有效的方法,不需要检查每个循环迭代是可能的?我看了一下事件驱动编程,但找不到与基于时间的事件有很大关系。
因此,我想知道是否有人有时间轴或基于时间的事件触发的任何经验,并会有任何提示或资源,我可以看看找出一个更有效的想法?任何帮助将是伟大的,谢谢!
事件应该在**处运行的时间是其ID,不需要另一个数字(除非您需要其他用途)。 – 2012-04-04 17:06:39
保持事件列表按时间排序,因此您只需查看第一个条目即可。 – 2012-04-04 17:15:23