C++/DirectX でゲームを作成していますが、スプライトの保存で問題が発生しました。現在、スプライトを作成してベクターに保存できます。これを 1 つのスプライトに対して行うと、完全に機能します。しかし、別のスプライトを挿入しようとすると、前のスプライトのテクスチャ プロパティが削除されます。ブレークポイントのスクリーンショットとコードをいくつか含めます。
私が疑う問題は、オブジェクトがベクターに配置されておらず、スプライトの作成に使用される一時オブジェクトに依存していることです。ここにいくつかのスクリーンショットがあります:
https://www.dropbox.com/s/g5xdlaqf35w6q57/1.png
https://www.dropbox.com/s/xmcyv611nqc27xc/2.png
そしていくつかのコード:
// d2World.h
class d2World
{
public:
// Some functions
vector<d2Sprite> spritesList;
// More stuff
private:
d2Sprite *tempSprite;
// Other private variables
};
// d2World.h
// Some other functions
// A new object is created by re-assigning it
tempSprite = new d2Sprite();
// When a the sprite is completed, add it to the vector
spritesList.push_back(*tempSprite);
// More stuff here
理解できないのは、テクスチャ プロパティだけが影響を受けるのはなぜですか?
ご協力いただきありがとうございます。
編集:d2Sprite
クラス
のヘッダー コードは次のとおりです。
class d2Sprite
{
public:
d2Sprite(void);
~d2Sprite(void);
void Load(LPDIRECT3DTEXTURE9 tex);
void Position(int x, int y);
int x, y, frame, frameW, frameH, columns;
float Rotation;
D3DXVECTOR3 GetPosition();
D3DXVECTOR2 Scale;
D3DXVECTOR2 Center;
D3DXVECTOR2 Translation;
LPDIRECT3DTEXTURE9 texture;
D3DCOLOR colour;
};