0

所以我无法在任何地方找到答案。我有一个实体类,我从中创建游戏中的所有角色。eg:玩家继承实体。

现在我想做的是从实体类调用 Player 中的“更新”方法。这可能吗?因为我需要为我现在创建的每个新实体类型执行此操作:

 foreach (Entity entity in entityList) {
                if (entity is Zombie) {
                    Zombie zombie = (Zombie)entity;
                    zombie.Update();
                }
                //new character here
            }

提前致谢!

4

2 回答 2

1

如果“更新”的概念适用于所有实体,您可以创建Update一个虚函数Entity并让它Player覆盖它。然后,您的内部成员函数Entity只需调用Update()特定Entity对象并让调用动态分派:

foreach (Entity entity in entityList) { entity.Update(); }

如果Update()对所有 s 都没有意义Entity,那么将它们作为虚函数Entity会污染该类的接口,在我看来,您的选择是正确的。

如果您想避免动态向下转换,您也可以考虑使用访问者模式。

于 2013-03-22T11:07:39.270 回答
0

覆盖Update()子类中的方法。然后,只需调用entity.Update()任何遇到的实体。这就是所谓的多态性。

于 2013-03-22T11:07:24.167 回答