主要的游戏对象是静态的

我正在使用Android Studio和Java中的Libgdx制作Android游戏。 在我的游戏中有主要的对象,如屏幕,ObjectFactory,SoundPlayer,画家(负责绘图)等等。 直到现在,我将它们传递给了每个使用它们的GameObject,但后来我意识到我可以让它们变成静态的,每个需要它们的GameObject都会静态地调用它们。 我想知道是否让这些主要对象变成静态的,会不会影响性能? 因为它似乎是这样一个舒适的解决scheme…在此先感谢。

这不会损害性能。 它实际上可能(非常,可以忽略不计)更快,因为你节省了传递这些对象到游戏对象的开销。

静态类经常被忽视的原因是它们的静态属性是全局variables,而全局variables导致各种架构方面的问题。 例如,当您决定需要多个Screen,ObjectFactory,SoundPlayer或Painter对象时,您将很难重构应用程序以允许这样做。 另一个问题是你不能在创建这些对象时立即初始化这些对象,因为它们总是在附近。 这意味着你需要记住哪一个已经被初始化,哪一个没有被初始化,当彼此依赖的时候会造成相当头痛的问题。

但是,如果这些原因不能说服你的特定项目,静态类没有什么问题。

如果你肯定只会有这些对象的一个​​实例,大概是你,那么这将是一个更好的方式去。 然而,也许更好的解决scheme是使用Singleton模式 ,并且(例如)在Screen类中创建一个静态GetScreen()方法,其他类可以调用以获得Screen类的单个实例。