C#:创建一个全局静态方法

时间:2018-03-31 18:41:20

标签: c# xna monogame

所以,我在Monogame开发游戏已经有一段时间了,我正在尝试优化代码。我试图优化的一件事是LoadContent方法,它只出现在其中一个类(游戏一)上,用于将资源加载到游戏中。

我想:在每个类中都有一个全局的静态方法自己加载内容,而不是让Game类为它们加载它,这不是很好吗?

实施例:
我如何加载内容:

class.LoadContent(c) // c is ContentManager, a variable used for loading assets
class2.LoadContent(c) // LoadContent(c) is a static method
class3.LoadContent(c)
...

我希望如何:

allTheClassesThatNeedContent.LoadContent(c) // LoadContent(c) is still a static method
// Assets loaded in each and every class!

我怎么能这样做?或者,甚至可以像我想的那样去做吗?

2 个答案:

答案 0 :(得分:2)

我在我的主类(默认项目中的Game1)中将ContentManager声明为 public static

public static ContentManager content;

有了这个,我可以通过

加载任何类中的任何内容
Game1.content.Load<T>()

特别是对于较大的项目,我建议不要在Game1&#39;中加载所有数据。 LoadContent()因为您可能会加载很多启动时不需要的内容(例如来自未访问级别的关卡数据),这会在游戏变大时显着降低游戏启动速度。< / p>

如果真的需要像构造函数那样加载内容。

答案 1 :(得分:0)

您可以创建一个抽象基类,从中派生所有可加载类。

然后,在基类构造函数中,将您的类添加到静态集合(例如List<T>)。在静态方法中,对集合中的每个类调用LoadContent方法。

唯一的问题是这些类需要在处理之前从集合中删除。最好坚持当前的实施。