LibGDX Sprite批处理并在运行时添加新Sprite

LibGDX Sprite批处理并在运行时添加新Sprite,libgdx,sprite,spritebatch,batching,Libgdx,Sprite,Spritebatch,Batching,我是一名使用libgdx引擎的新程序员,对sprite批处理的行为感到好奇。特别是如何在程序生命周期中将精灵添加到绘图批中。到目前为止,所有精灵示例都使用了类似以下代码: batch.begin(); 雪碧.抽(批); batch.end() 等,我不清楚我将如何绘制不同数量的精灵,因为每个精灵。绘制必须在批中调用。。。提前感谢您的解释 简单地说,将每次调用sprite.draw()视为在某个点绘制sprite的请求。每次调用sprite.draw()都会将精灵添加到批处理中。调用batch.e

我是一名使用libgdx引擎的新程序员,对sprite批处理的行为感到好奇。特别是如何在程序生命周期中将精灵添加到绘图批中。到目前为止,所有精灵示例都使用了类似以下代码:
batch.begin();
雪碧.抽(批);
batch.end()

等,我不清楚我将如何绘制不同数量的精灵,因为每个精灵。绘制必须在批中调用。。。提前感谢您的解释

简单地说,将每次调用sprite.draw()视为在某个点绘制sprite的请求。每次调用sprite.draw()都会将精灵添加到批处理中。调用batch.end()时,将绘制添加到批中的所有精灵,并清空批。由于批处理的内容不是持久性的(即,在调用batch.end()时,批处理将清空),因此每次使用批处理时都必须将精灵和图像添加到批处理中

在以下示例中,要绘制的所有精灵都存储在精灵集合中,并在每次绘制时添加到批次中,如果从render()方法调用,则该批次位于每个帧上


现实情况要复杂一点,因为sprite批次在装满时以及在其他一些情况下会刷新,但一个好的经验法则是在每个帧上添加您想要绘制的所有内容。

看看stage-actor系统。它已经实现了一个“阶段”,您可以在其中添加所有参与者。通过一个简单的舞台画,它确实画出了每个演员的当前位置和当前状态。您可以查看它的代码以了解系统。也可以看看gameloop的概念。很棒的建议mind=blow benn!这正是我想要的谢谢你的解释
batch.begin();
for (sprite : sprites) {
    sprite.draw(batch);
}
batch.end()