C#:制作一个全局静态方法

C#: Make a global static method

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

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

示例:
我现在如何加载内容:

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!

我该怎么做?或者,是否可以按照我的意愿去做?

您可以创建一个抽象基础 class,您的所有可加载 classes 都源自该基础。

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

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

我在我的主 class(默认项目中的 Game1)

中将 ContentManager 声明为 public static
public static ContentManager content;

有了这个,我可以通过

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

特别是在较大的项目上,我不建议在 Game1' LoadContent() 中加载所有数据,因为您可能会加载很多启动时不需要的内容 (例如来自未访问关卡的关卡数据),当游戏变大时,这将显着减慢游戏启动速度。

如果确实需要,则像在构造函数中那样加载内容。