情景1:
public class Game {
public void doSomething(Hero hero, Enemy enemy){
if (hero.IsAlive()){
hero.checkCollisionWith(enemy);
}
}
}
场景2
public class Game {
Hero hero;
Enemy enemy;
public Game(Hero hero, Enemy enemy) {
this.hero = hero;
this.enemy = enemy;
}
public void doSomething() {
if (hero.IsAlive()){
hero.checkCollisionWith(enemy);
}
}
}
现在,在正常情况下,我想两者都可以接受,但是,在一个每秒被调用60次的游戏循环中,这是第一个通常要避免的选择吗?通过循环中调用的方法传递引用有多大的性能?
请记住,这只是一个例子,在实际项目中,会有一个很多更多的这些方法被调用,并涉及更多的对象。
为游戏类提供前期需要的参考(构建时)而不是经常传递它们会更明智吗?
答案 0 :(得分:2)
以这种方式传递参数非常有效 - 调用不带参数的函数和带参数的函数之间的差异可以忽略不计。
特别是在游戏中,渲染/碰撞/ AI代码肯定会处理器非常密集,这样的小差别无关紧要。
然而,从代码的简洁和优雅的角度来看,我认为您的第二个解决方案更加包含,更传统的OOP和可读性。