【发布时间】:2015-07-17 23:43:32
【问题描述】:
所以,我正在使用实体系统创建游戏。
公共类子弹:实体
公共类 Npc:实体
公共类坦克:实体
公共类实体
一个实体只有一些功能: 更新(),渲染()
我创建了一个这样的列表:
List<Entity> entities = new List<Entity>();
然后我循环遍历所有这些并调用 Update() / Render()
但是存储的 Bullets 或 Npcs 不会被它们的 Update 或 Render 函数调用。
TL;DR
如何使用 Update/Render 函数存储所有不同的类,并在循环中为所有这些类调用它。
实体
class Entity
{
public void Update(GameTime gameTime, GraphicsDevice gd, Player p, Tilemap tm, EntityManager em)
{
}
public void Draw(SpriteBatch sb)
{
}
}
子弹
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);
}
}
}
【问题讨论】:
-
我假设您需要帮助:
But the stored Bullets or Npcs will not get called with their Update or Render functions.。但是您没有包含相关代码来帮助您。请包括Minimal, Complete, and Verifiable example。谢谢。 -
把 List
弄错了例子。固定为列表 。如果它的 List 效果很好。