在游戏循环中创建 class 个对象
Creating class object in the game loop
我想知道在游戏循环中一次创建 classes 对象的正确方法是什么?例如,我有 Box、Sphere、Cyllinder classes,我想在程序 运行 的不同时间创建几个对象,并在将来使用它们。保存这些对象的正确方法是什么?将所有 classes 合并为一个向量 class?
vector<glm::vec3> initVerts = {/*verts position*/};
class Box
{
vector<glm::vec3> verts;
Box(): verts(initVerts)
void moveBox(glm::vec3 newPos){ /*translate verts*/ }
};
while ( !windowShouldClose())
{
Box box;
box.moveBox(1.0,0.0,0.0); // on the second pass it was another box with initial position
}
最简单的方法是为每种 class 类型创建一个向量。开始:
std::vector<Box> boxes;
boxes.reserve(100); // however many you expect to need
Box& box1 = boxes.emplace_back();
while ( !windowShouldClose())
{
box1.moveBox(1.0,0.0,0.0);
}
或者如果您不需要迭代所有对象的方法,您可以将它们单独存储在循环之外:
Box box1;
while ( !windowShouldClose())
{
box1.moveBox(1.0,0.0,0.0);
}
我想知道在游戏循环中一次创建 classes 对象的正确方法是什么?例如,我有 Box、Sphere、Cyllinder classes,我想在程序 运行 的不同时间创建几个对象,并在将来使用它们。保存这些对象的正确方法是什么?将所有 classes 合并为一个向量 class?
vector<glm::vec3> initVerts = {/*verts position*/};
class Box
{
vector<glm::vec3> verts;
Box(): verts(initVerts)
void moveBox(glm::vec3 newPos){ /*translate verts*/ }
};
while ( !windowShouldClose())
{
Box box;
box.moveBox(1.0,0.0,0.0); // on the second pass it was another box with initial position
}
最简单的方法是为每种 class 类型创建一个向量。开始:
std::vector<Box> boxes;
boxes.reserve(100); // however many you expect to need
Box& box1 = boxes.emplace_back();
while ( !windowShouldClose())
{
box1.moveBox(1.0,0.0,0.0);
}
或者如果您不需要迭代所有对象的方法,您可以将它们单独存储在循环之外:
Box box1;
while ( !windowShouldClose())
{
box1.moveBox(1.0,0.0,0.0);
}