我试图创建一种方法来保存我C++游戏中的所有实体,因为它们仅限于一种类型,所以数组无法工作。我需要存储与Entity类相关的所有内容,并且它都是衍生物。我一直试图通过一种方式来存储所有游戏实体,我可以循环遍历它们并绘制它们。还没有找到解决方案。在C++游戏中存储所有实体的最佳方法
0
A
回答
2
假设Entity
是许多事物派生出来的基类,你可以有一个容器(任何容器都可以,但std::vector
是一个很好的开始,除非你有其他特定的要求)。
class Entity
{
public:
virtual void Draw() = 0;
};
class Atom : public Entity
{
public:
void Draw() override {}
};
class Environment : public Entity
{
public:
void Draw() override {}
};
int main()
{
std::vector< std::shared_ptr<Entity> > entities;
entities.push_back(std::make_shared<Atom>());
entities.push_back(std::make_shared<Environment>());
// Draw entities:
for (size_t ent = 0; ent < entities.size(); ++ent)
{
entities[ent]->Draw();
}
return 0;
}
如果Entity
是不是有些基类,你也可以放眼boost::optional
-2
相关问题
- 1. 在游戏中存储3D模型,最好的方法
- 2. 删除存储库中相关实体的最佳方法
- 3. 存储2D游戏地图的最佳方式
- 4. 存储游戏数据的最佳方式是什么?
- 5. 用于在游戏中存储实体的数据结构
- 6. 在cocos2d游戏中实现关卡的最佳做法
- 7. 将C++游戏移植到网络上的最佳方法
- 8. 游戏实体更新方法
- 9. 在线游戏最佳做法
- 10. 在Unity台球游戏中实现多人游戏的最佳方法是什么?
- 11. 在实体框架中存储多类型值的最佳方法
- 12. 哪个是在实体框架中调用存储过程的最佳方法
- 13. 在iPhone上存储游戏数据的最佳方式是什么?
- 14. javafx在游戏中渲染实体的正确方法?
- 15. 使用C#在.Net Compact Framework中存储值的最佳方法?
- 16. 在C中存储命令行参数的最佳方法
- 17. 在Azure表存储中存储实体指针(外键)的最佳实践
- 18. Android:实现游戏板的最佳方式是什么?
- 19. 用python实现纸牌游戏套牌的最佳方式
- 20. 编码实时多人游戏的最佳方式
- 21. 实现HTML5等距游戏的最佳方式?
- 22. 实现游戏回放的最佳方式?
- 23. 更新实体框架中的实体的最佳方法
- 24. 使用AndEngine GLES2在游戏中使用Sprites的最佳实践
- 25. 使用JavaFX在游戏中移动角色的最佳实践?
- 26. 保存等距游戏数据的最有效方法
- 27. 使用类方法在Python游戏中存储用户值
- 28. 什么是保存游戏状态的最佳方式?
- 29. 保存游戏得分的最佳方式是什么?
- 30. 本地化实体的最佳方法?
你可以提供一个基本的代码?你想循环不具有相同类型的元素吗? – styko
具有'Entity'类型的数组将允许您将任何属于'Entity'的东西包括在内,包括子类,所以这实际上不是不使用数组的原因。但是固定大小通常是更多原因。 –