我正在用AndEngine编写游戏,然后我将几十个精灵放入一个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之前将颜色(...)设置为每个精灵时,颜色才会发生变化我 在这里做错了吗?还有其他方法吗?
每一个小提示都值得赞赏!谢谢你。
编辑:我的解决方案
正如Cameron Fredmans 所建议的(再次感谢!)我首先尝试SpriteBatch 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 类时,我当然会非常感兴趣!:)