sfml - 将所有对象放在数组中

时间:2017-03-01 14:59:52

标签: c++ arrays sfml

我正在开发一款游戏,并希望当我创建一个对象时,它会被添加到一个数组中(因此它更容易绘制并且可能 改变坐标和东西)。 我只是不知道该怎么做。 如果它有帮助,我的功能是:

void CreateTile(string Texture, sf::Vector2f Pos)
{
    sf::Texture texture;
    texture.loadFromFile(Texture);
    sf::Sprite Tile;
    Tile.setTexture(texture);
    Tile.setPosition(Pos);
}

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以使用标准库中的容器,最基本的容器是std::vector<>sf::Texture个对象是重物,不应该被不必要地复制。您应该将它们保存在一个地方,并且只在需要时引用

std::vector<sf::Sprite*> sprites;
std::vector<sf::Texture*> textures;

void CreateTile(const std::string& file, const sf::Vector2f& position)
{
    sf::Texture* texture = new sf::Texture();
    texture->loadFromFile(file);

    textures->push_back(texture);

    sf::Sprite* tile = new sf::Sprite();
    tile->setTexture(*texture);
    tile->setPosition(position);

    sprites->push_back(tile);
}

因为这是现代C ++,你应该使用上面的原始指针。使用智能指针,例如std::shared_ptr

警告:解决方案不仅仅是复制此代码并希望它以某种方式工作。获得一本关于C ++基础知识的好书,并阅读它的封面。没有捷径。如果你想编写游戏代码,你需要学习这门语言。