C# 实体管理,带有继承方法调用

C# 实体管理,带有继承方法调用,c#,xna,entity,monogame,C#,Xna,Entity,Monogame,因此,我正在创建一个具有实体系统的游戏 公共类项目符号:实体 公共类Npc:实体 公共类坦克:实体 公共类实体 实体仅具有一些功能: 更新(),渲染() 我创建了一个如下列表: List<Entity> entities = new List<Entity>(); 项目符号 class Bullet : Entity { public new void Update(GameTime gameTime, GraphicsDevice gd, Player p,

因此,我正在创建一个具有实体系统的游戏

公共类项目符号:实体

公共类Npc:实体

公共类坦克:实体

公共类实体

实体仅具有一些功能: 更新(),渲染()

我创建了一个如下列表:

List<Entity> entities = new List<Entity>();
项目符号

class Bullet : Entity
{
    public new void Update(GameTime gameTime, GraphicsDevice gd, Player p, Tilemap tm, EntityManager em)
    {
    }

    public new void Render(SpriteBatch spriteBatch)
    {
    }

}
实体经理

class EntityManager
{
    public List<Entity> entityList = new List<Entity>();

    public void Update(GameTime gameTime, GraphicsDevice graphics, Player p, Tilemap tm, EntityManager em)
    {
        int i = 0;
        while (i < entityList.Count)
        {
            entityList[i].Update(gameTime, graphics, p, tm, em);
            i++;
        }
    }
    public void Render(SpriteBatch sb)
    {
        foreach (Bullet entity in entityList)
        {
            entity.Draw(sb);
        }
    }
类实体管理器
{
public List entityList=new List();
公共无效更新(游戏时间、图形设备图形、玩家p、Tilemap tm、EntityManager em)
{
int i=0;
while(i

}

更改您的
实体的方法以使用
虚拟
关键字:

public virtual void Update(...

public virtual void Draw(...
public override void Update(...

public override void Draw(...
在子类中,您希望通过使用
override
关键字而不是
new
关键字来重写基类的方法:

public virtual void Update(...

public virtual void Draw(...
public override void Update(...

public override void Draw(...
通过在继承树中使用
virtual/override
组合,可以启用多态性,这将允许调用子类的方法,即使是从
列表中调用


链接到的更多信息。

我想您需要这方面的帮助:
但是存储的项目符号或NPC不会被其更新或渲染功能调用。
。但是您还没有包含相关的代码来帮助您。请附上一份。谢谢。在示例中,将列表放错了。固定到列表。如果它的列表运行良好。