所以我无法在任何地方找到答案。 我有一个实体类,我可以在游戏中创建我的所有角色。例如:玩家继承实体。
现在我想要做的是调用"更新"来自实体类的Player中的方法。这可能吗?因为我需要为我现在创建的每个新实体类型执行此操作:
foreach (Entity entity in entityList) {
if (entity is Zombie) {
Zombie zombie = (Zombie)entity;
zombie.Update();
}
//new character here
}
提前致谢!
答案 0 :(得分:1)
如果“更新”的概念适用于所有实体,则可以使Update
成为Entity
的虚拟函数,并让Player
覆盖它。然后,在Entity
的内部成员函数中,您只需要在特定的Update()
对象上调用Entity
并动态调度该调用:
foreach (Entity entity in entityList) { entity.Update(); }
如果Update()
对所有Entity
没有意义,那么将它们作为Entity
的虚函数会污染该类的界面,在我看来,你的选择是正确的。
如果您想避免动态向下转播,也可以考虑使用Visitor Pattern。
答案 1 :(得分:0)
覆盖子类中的Update()
方法。然后,只需为遇到的任何实体调用entity.Update()
即可。这就是所谓的多态性。