私はAndEngineでゲームを書いており、そこで数十個のスプライトを 1 つのSpriteBatchに入れています。これを行う必要があります。そうしないと、すべてのスプライトを単独で描画するときにフレーム レートが大幅に低下します。私の質問は、完全なSpriteBatchの色を変更するにはどうすればよいですか?
これがSpriteBatchの作成方法です。
ArrayList<Sprite> dozenSprites; // these are all the sprites of one SpriteBatch in a list
SpriteBatch spriteBatch = new SpriteBatch(spriteBatchTextureAtlas, dozenSprites.size(),vertexBufferObjectManager);
for (Sprite sprite : dozenSprites) {
spriteBatch.draw(sprite);
}
spriteBatch.submit();
まあ、それについて特別なことは何もありません。すべての準備が整ったら、SpriteBatchをシーンにアタッチすると、想定どおりに表示されます。ただし、呼び出してspriteBatch.setColor(0.5f,0.5f,0.5f);
も何も起こりません。色は、 SpriteBatchを描画する前に、すべてのスプライトに setColor(...) を設定した場合にのみ変更さ れます。別の方法はありますか?
少しでもヒントをいただければ幸いです。ありがとうございました。
編集: 私の解決策
Cameron FredmansSpriteBatch class
が示唆したように (ありがとうございます!) 私は最初に直接拡張してsetColor()
メソッドを実装しようとしました。しかし、方法がわからなかったので、クイックでダーティなバリアントを選択しました。
// initialize the SpriteBatch as above
// and to change the color call:
spriteBatch.reset();
for (Sprite sprite : dozenSprites) {
sprite.setColor( theNewColor );
spriteBatch.draw(sprite);
}
spriteBatch.submit();
spriteBatch を使用するとパフォーマンスが大幅に向上するため、元のすべてのスプライトを ArrayList に保持し、毎回バッチを再初期化するだけでも十分に高速です。しかしもちろん、誰かが SpriteBatch クラスの拡張に成功したら、私は非常に興味があります! :)