我试图创建一种方法来保存我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. 存储整个游戏范围的变量的最佳方法
- 2. 在XNA中保存游戏的“最佳”方法是什么?
- 3. 多人游戏的最佳方法
- 4. 在游戏中存储3D模型,最好的方法
- 5. libgdx:加载游戏中所有资产的最佳方式
- 6. 删除存储库中相关实体的最佳方法
- 7. 存储游戏数据的最佳方式是什么?
- 8. 存储2D游戏地图的最佳方式
- 9. 使用一个类来存储游戏数据,最佳实践?
- 10. 在cocos2d游戏中实现关卡的最佳做法
- 11. 在C#.NET中制作游戏的最佳方式是什么?
- 12. 用于在游戏中存储实体的数据结构
- 13. 将C++游戏移植到网络上的最佳方法
- 14. 游戏实体更新方法
- 15. 呈现非立方体沙盒游戏的最佳方式?
- 16. 在线游戏最佳做法
- 17. 在风筝游戏andengine中实现字符串的最佳方法
- 18. 在Unity台球游戏中实现多人游戏的最佳方法是什么?
- 19. 哪个是在实体框架中调用存储过程的最佳方法
- 20. 在实体框架中存储多类型值的最佳方法
- 21. 在iPhone上存储游戏数据的最佳方式是什么?
- 22. Android的MMO游戏的最佳做法?
- 23. 存储和版本查找的最佳方式本地存储中的实体
- 24. Java Swing'游戏循环'最佳实践
- 25. 加载游戏位图:最佳实践
- 26. 在Unity3D中保存游戏的方法
- 27. 使用JSON存储游戏中的实体状态
- 28. 使用C#在.Net Compact Framework中存储值的最佳方法?
- 29. 在C中存储命令行参数的最佳方法
- 30. Silverlight 2D游戏的最佳做法
你可以提供一个基本的代码?你想循环不具有相同类型的元素吗? – styko
具有'Entity'类型的数组将允许您将任何属于'Entity'的东西包括在内,包括子类,所以这实际上不是不使用数组的原因。但是固定大小通常是更多原因。 –