如何缓存TextureAtlas结果?

时间:2014-05-11 22:04:16

标签: caching libgdx sprite texture-atlas

当使用TextureAtlas使用createSprite方法创建Sprite时,LibGDX文档说:此方法使用字符串比较来查找区域并构造新的sprite,因此应该缓存结果而不是多次调用此方法。

如何缓存这些结果?它只是我创建的变量来存储创建的精灵吗?如果是,那么如何创建相同精灵的不同副本?

1 个答案:

答案 0 :(得分:2)

每次使用createSprite方法时,都会创建一个新的Sprite。例如,通常你每个敌人都有一个精灵。让我们说你有一个班级Frog,这是你的敌人之一。它应该看起来像这样(伪代码):

public class Frog {
    private Sprite sprite;

    public Frog(TextureAtlas atlas) {
        sprite = atlas.createSprite("frog");
    }

    public void update(float deltaTime) {
        // update the sprite position
    }

    public void render(Batch batch) {
        sprite.draw(batch);
    }
}

现在每个Frog都有自己的Sprite。这是必要的,因为所有的青蛙都可以在不同的地方。该职位将通过Sprite进行配置。您将在构造函数中仅创建一次精灵,并且所有这些精灵共享相同TextureRegion的{​​{1}},这将产生良好的性能,因为不会有很多纹理当你渲染你的青蛙时,打开图形卡。