为更新循环插入对象的更好解决方案

Better solution for inserting objects for update loop

所以我是游戏开发的新手,还不知道任何模式。试图自己解决所有问题,这是我遇到的一个问题。

我有一个叫做 BowLevel 的关卡。它具有更新敌人列表、处理碰撞等的更新方法。

但是,我向这些列表添加对象的实现方式感觉不对。这真的没有道理。

这是我的抽象构造函数 Enemy class

public Enemy (Vector2 position, int level)
{
    this.position = position;
    BowLevel.enemies.add(this);
    state = PawnState.WALK;
    this.level = level;
}

除此之外,我将无法将敌人添加到任何其他级别。 但是将我的关卡对象传递给所有 classes 的每个构造函数似乎也是错误的。

有没有更好的方法解决这个问题?

如果我理解你的代码,你有一堆关卡,每个关卡都是一个 class,并且你将每个关卡中的敌人存储为静态 ArrayList,因此你不需要知道如何添加到不同的级别。

正确的 OO 方法是定义一个 class Level,它定义所有级别通用的方法(不是静态的)。例如,您可以:

class Level {
  private ArrayList<Enemy> enemies = new ArrayList<>();

  public void addEnemy(Enemy en) {
  }
  ...
}

现在您的 BowLevel class 可能看起来像这样:

class BowLevel extends Level {
  public BowLevel() {
    // do something here which is level specific... 
    //perhaps create the enemies?
    addEnemy(new Enemy(....));
  }
}