为更新循环插入对象的更好解决方案
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(....));
}
}
所以我是游戏开发的新手,还不知道任何模式。试图自己解决所有问题,这是我遇到的一个问题。
我有一个叫做 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(....));
}
}