Java 整个应用程序的LibGDX公共sprite批处理

Java 整个应用程序的LibGDX公共sprite批处理,java,android,object,memory-management,libgdx,Java,Android,Object,Memory Management,Libgdx,这里的问题是,在游戏类中使用一个公共SpriteBatch是否是一个好主意,然后所有屏幕都使用它。这将避免在活动屏幕更改时重新分配对象 然而,我看到人们在每个屏幕上使用新的和私有的SpriteBatch。人们为什么这样做?我是不是遗漏了什么?你说得对。他们不应该这样做。如果您想保护它一点,可以将其设置为最终版本。所有使用它的对象都应该知道如何设置所需的参数,例如应用自己的投影矩阵和混合模式 你说得对。他们不应该这样做。如果您想保护它一点,可以将其设置为最终版本。所有使用它的对象都应该知道如何设置

这里的问题是,在游戏类中使用一个公共SpriteBatch是否是一个好主意,然后所有屏幕都使用它。这将避免在活动屏幕更改时重新分配对象


然而,我看到人们在每个屏幕上使用新的和私有的SpriteBatch。人们为什么这样做?我是不是遗漏了什么?你说得对。他们不应该这样做。如果您想保护它一点,可以将其设置为最终版本。所有使用它的对象都应该知道如何设置所需的参数,例如应用自己的投影矩阵和混合模式

你说得对。他们不应该这样做。如果您想保护它一点,可以将其设置为最终版本。所有使用它的对象都应该知道如何设置所需的参数,例如应用自己的投影矩阵和混合模式

建议使用单个
批处理
实例,但我认为公共(或静态)变量不是一个好主意,因为它们破坏了封装,使重构代码变得更加困难。想象一下,将screen类移动到另一个应用程序:您必须替换
游戏
扩展中对批处理的所有引用,否则您将被迫在另一个项目中创建这样的字段


相反,我将在屏幕构造函数中传递批处理。毕竟,屏幕是用来显示视图的:不需要通知他们应用程序的其余部分。

建议使用单个
批处理
实例,但我认为公共(或静态)变量不是一个好主意,因为它们破坏了封装,使重构代码变得更加困难。想象一下,将screen类移动到另一个应用程序:您必须替换
游戏
扩展中对批处理的所有引用,否则您将被迫在另一个项目中创建这样的字段

相反,我将在屏幕构造函数中传递批处理。毕竟,屏幕是用来显示视图的:不需要通知他们应用程序的其余部分