这里的问题是在Game类中是否有一个公共SpriteBatch是一个好主意,然后由所有Screen使用。这样可以避免在活动屏幕发生变化时重新分配对象。
但是,我看到人们在每个屏幕上都使用新的和私有的SpriteBatches。为什么人们会这样做?我在这里错过了什么吗?
答案 0 :(得分:1)
你是对的。他们不应该这样做。如果你想保护它,你可以使它final
。使用它的所有对象都应该知道设置它们所需的参数,例如应用它们自己的投影矩阵和混合模式。
答案 1 :(得分:1)
建议使用单个Batch
实例,但我认为公共(或静态)变量不是一个好主意,因为它们会破坏封装并使重构代码变得更加困难。想象一下,将屏幕类移动到另一个应用程序:您必须替换Game
扩展中对批处理的所有引用,否则您将被迫在另一个项目中创建此类字段。
相反,我会在屏幕构造函数中传递批处理。毕竟屏幕用于显示视图:无需告知它们应用程序的其余部分。