C# 实体管理,带有继承方法调用
因此,我正在创建一个具有实体系统的游戏 公共类项目符号:实体 公共类Npc:实体 公共类坦克:实体 公共类实体 实体仅具有一些功能: 更新(),渲染() 我创建了一个如下列表: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,
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不会被其更新或渲染功能调用。
。但是您还没有包含相关的代码来帮助您。请附上一份。谢谢。在示例中,将列表放错了。固定到列表。如果它的列表运行良好。