SFMLでwhite square problemが発生しました。私はタイルマップを使用するゲームに取り組んでいます。 A Game
クラスは、ファイルからsf :: Textureとしてタイルセットをロードし、次にGame
のgetTileById関数は、適切なタイルをタイルセットテクスチャから「カット」します。例えば。SFMLの白い四角、異なるオブジェクトに格納されたスプライトとテクスチャ
sf::Sprite GameScreen::getSpriteByPos(int pos, sf::Texture texture, int tileSize) {
sf::IntRect subRect;
subRect.left = (pos-1)*tileSize;
subRect.top = (pos-1)*tileSize;
subRect.width = tileSize;
subRect.height = tileSize;
sf::Sprite tileSprite(texture, subRect);
return tileSprite;
}
スプライトがTileオブジェクトに渡され、スプライトがそのスプライト属性に設定されます。例えば。
void Tile::setSprite(sf::Sprite sprite) {
sprite_ = sprite;
}
Game
オブジェクトは、この方法ですべてのタイルをロードし、それらをすべてベクターに格納します。それらを描画するには、ベクトルをループし、それぞれのベクトルでTile::draw(sf::RenderWindow&)
メソッドを呼び出します(レンダリングするRenderWindowを渡す)。このメソッドはsf :: RenderWindowを受け取り、タイルはRenderWindowのsprite_
属性でsf::RenderWindow::draw(sf::Sprite)
を呼び出します。例えば。
void Tile::draw(sf::RenderWindow &window){
window.draw(sprite_);
return;
}
Tile::draw
方法がDrawable
クラスから継承されるため、描画可能であるすべてのオブジェクトがDrawableの継承と自分に合った方法で彼らの描画メソッドを実装することができるように、私は、この方法を描くやってみたいです、私のプロジェクトに必要なもの。スプライトは白い四角形として描画されていますが、tileSet_属性が破棄されていないことを奇妙に感じます。それはGame
クラスの属性であり、依然として存在します。
ここで何が起こっているか教えてもらえますか?どんな助けもありがとう。