我知道如何处理这个问题,但我不确定它是否理想.事件我的意思是,例如,如果玩家获胜,一堆火花飞行1秒钟.我正在考虑创建我的游戏引擎类,然后创建一个游戏事件基类,它有3个void函数,update,draw,render.例如,可以存在用于收集100个硬币3秒钟的火炮.我想要实现它的方式是在我的游戏引擎中有一个事件向量,我可以在其中推动fireforks动画.一旦在向量中推送了一些东西,游戏就会执行event [i] .render()等...删除它我认为每个事件可以在帧中具有事件长度,并且每个帧增加一个uint,如果uint与长度匹配,则从向量中弹出它.我只是不确定如果这样做是最好的方式.
谢谢
我会让每个事件实例都有一个名为 isDone 的方法,或类似的方法。然后,对于每一帧,迭代您的事件并:
if (event.isDone()) {
//remove the event
} else {
event.update();
}
Run Code Online (Sandbox Code Playgroud)
这样做可以让将来更容易进行更改。并非所有事件都会持续固定的时间(这可能不适用于您的游戏),有些事件甚至可能取决于当前帧以外的其他因素。
但在你的 eventBaseClass 中,你可以将 isDone 定义为:
return this.endFrame >= game.currentFrame;
Run Code Online (Sandbox Code Playgroud)
并在您需要的任何事件中覆盖它。