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() 中加载所有数据,因为您可能会加载很多启动时不需要的内容 (例如来自未访问关卡的关卡数据),当游戏变大时,这将显着减慢游戏启动速度。
如果确实需要,则像在构造函数中那样加载内容。
所以,我在 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 staticpublic static ContentManager content;
有了这个,我可以通过
加载任何class中的任何内容Game1.content.Load<T>()
特别是在较大的项目上,我不建议在 Game1' LoadContent() 中加载所有数据,因为您可能会加载很多启动时不需要的内容 (例如来自未访问关卡的关卡数据),当游戏变大时,这将显着减慢游戏启动速度。
如果确实需要,则像在构造函数中那样加载内容。