无法将图像加载到纹理矢量 (SFML)

Failed to load image to texture vector (SFML)

我们正在尝试将纹理加载到纹理向量中,以便能够构建游戏。 一旦到达我们试图将图像加载到矢量的行,程序就会被抛出。 向量的定义是:

向量> m_textureVec;

#include "Resources.h"
#include <thread>
#include <SFML/Graphics.hpp>

using std::vector;

Resources Resources::m_instance = Resources();

Resources::Resources()
{
    vector<unique_ptr<sf::Texture>> m_textureVec;
    m_textureVec.resize(8);

    m_textureVec[0]->loadFromFile("digger.png");
    m_textureVec[1]->loadFromFile("monster.png");
    m_textureVec[2]->loadFromFile("diamond.png");
    m_textureVec[3]->loadFromFile("present.png");
    m_textureVec[4]->loadFromFile("stone.png");
    m_textureVec[5]->loadFromFile("wall.png");
    m_textureVec[6]->loadFromFile("background.png");
    m_textureVec[7]->loadFromFile("empty.png");
}

您需要为 unique_ptr 分配内存。现在你有 8 个 unique_ptr 没有任何指向。

Resources::Resources()
{
    vector<unique_ptr<sf::Texture>> m_textureVec;
    m_textureVec.resize(8);

    m_textureVec.push_back(std::unique_ptr<sf::Texture>(new sf::Texture()));
    m_textureVec[0]->loadFromFile("digger.png");
    //etc
}

此外,当您的 Resources() 功能完成时,您将失去您的 m_textureVec。最好在更持久的环境中创建该变量。