我正在编写一个游戏,并有一个名为GameObject的抽象类和三个扩展它的类(玩家,墙和敌人).
我有一个列表定义为包含我游戏中的所有对象.
List<GameObject> objects;
Run Code Online (Sandbox Code Playgroud)
当我需要对对象执行某些操作时,我就是这样做的:
public void update() {
for(GameObject o : objects) {
if(o instanceof Wall) {
// do something
}
else if(o instanceof Player) {
// do something
}
else if(o instanceof Enemy) {
// do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以你可以看到,我必须浏览整个列表并检查类型以找到只是找到一个对象.在我看来,这似乎并不是非常有效.所以我考虑将不同的派生类存储在自己的列表中.
private List<Wall> walls;
private List<Enemy> enemies;
private Player player; // only one
Run Code Online (Sandbox Code Playgroud)
这会更有效,而不是通过包含所有内容的整个列表并检查它的类型来决定是否做某事?非常感谢.
我正在创建一个游戏并且我已经封装了我的所有数据,这显然意味着如果我想从该类的实例中获取某些内容,我必须调用一个 getter 方法。我有一个每秒被调用多次的渲染循环。我必须多次调用同一个 getter 方法才能从对象中获取单个字段并用它做多项事情。仅存储对我在需要它的类中不断抓取的对象的额外引用会更好吗?在这种情况下,我可以在构造函数中抓取它并完成。这有意义吗?万分感谢。