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

时间:2018-01-05 03:13:11

标签: pointers constructor sfml

正如标题所说,我想将一个Texture对象应用于Sprite的倍数。以下是创建10个Creature对象的主要功能:

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();
    }

    ...
}

以下是Creature头文件:

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对象的实际纹理,让我相信它不断改变&#34;拥有&#34;每次调用body.setTexture(bodyTexture);时bodyTexture的内容。

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

1 个答案:

答案 0 :(得分:0)

找到答案:我只需将纹理作为参考传递,以便&#34;所有者&#34;每次调用body.setTexture(bodyTexture);

时,纹理都不会改变