我在我的游戏中使用了一个可能有用的解决方案。我实际上创建了一个 Timer 类:
public class Timer
{
protected float remaining;
protected float interval;
public Timer(float interval)
{
this.interval = interval;
this.remaining = interval;
}
public boolean hasTimeElapsed() { return (remaining < 0.0F); }
public void reset() { remaining = interval; }
public void reset(float interval) {
this.interval = interval;
this.remaining = interval;
}
public void update(float delta) { remaining -= delta; }
}
您将 Timer 初始化为某个时间段,然后在 update(delta) 方法中对所有 Timer 调用 Timer.update(delta),然后通过调用 Timer.hasTimeElapsed() 检查是否有任何计时器已用完。
在您的情况下,您只需要一个 Timer 对象,因为敌人是按顺序生成的。生成敌人后,重置计时器(如果需要,可以更改生成时间)并等待它再次启动。
您还可以修改 Timer 对象以使用主体观察者模式,以便在计时器关闭时触发回调。如果您的逻辑需要知道定时事件何时发生,但该逻辑无法直接访问增量时间,这将非常有用。