(SFML 2.4.2)如何将一个纹理应用于多个精灵



正如标题所说,我想将一个纹理对象应用于多个精灵。以下是创建 10 个生物对象的主函数:

int main() {
    ...
    // creates a Creature vector and fills it with 10 Creature objects
    std::vector<Creature> creatureList;
    for (int i = 0; i < 10; i++) {
        creatureList.emplace_back();
    }
    ...
}

以下是生物头文件:

class Creature {
public:
    Creature();
    ...
private:
    ...
    sf::Texture bodyTexture;
    sf::Sprite body;
};

最后,以下是源文件:

Creature::Creature() {
    ...
    bodyTexture.loadFromFile("square.png");
    ...
    body.setColor(sf::Color(rgbDistribution(mt), rgbDistribution(mt), 
    rgbDistribution(mt)));
    body.setTexture(bodyTexture);
}

这段代码的问题在于,它只为最近创建的 Creature 对象提供实际纹理,导致我相信每次调用 bodyTexture 时,它都会不断改变 bodyTexture 的"拥有"body.setTexture(bodyTexture);

我在这里错过了什么?我尝试过抛出各种指针和其他东西,但无济于事。

找到答案:我只需要将纹理作为引用传递,这样纹理的"所有者"就不会在每次我调用时更改body.setTexture(bodyTexture);

相关内容

最新更新