所以我是游戏开发的新手,还不知道任何模式。试着自己解决这个问题,这是我遇到的一个问题。
我有一个名为BowLevel的关卡。它有更新方法,更新敌人列表,处理碰撞等。
然而,我实现向这些列表添加对象的方式感觉不对。它真的没有意义。
这是我的抽象func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
guard let text = (textField.text as NSString?)?.replacingCharacters(in: range, with: string) else {
return true
}
return text.trimmingCharacters(in: CharacterSet.alphanumerics).isEmpty ||
!text.characters.filter { $0 == "@" || $0 == "." }.isEmpty
}
类
Enemy
有了这个,我就无法将敌人添加到除此之外的任何其他级别。 但是将我的关卡对象传递给所有类的每个构造函数似乎都是错误的。
有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
如果我理解你的代码,你有很多级别,每个级别都是一个级别,并且你将每个级别的敌人存储为静态ArrayList
,因此你不知道如何添加到不同的水平。
正确的OO方法是定义一个类Level
,它定义所有级别共有的方法(而不是静态)。例如,您可以:
class Level {
private ArrayList<Enemy> enemies = new ArrayList<>();
public void addEnemy(Enemy en) {
}
...
}
现在您的BowLevel
课程可能如下所示:
class BowLevel extends Level {
public BowLevel() {
// do something here which is level specific...
//perhaps create the enemies?
addEnemy(new Enemy(....));
}
}