所以,我在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!
我怎么能这样做?或者,甚至可以像我想的那样去做吗?
答案 0 :(得分:2)
我在我的主类(默认项目中的Game1)中将ContentManager声明为 public static
public static ContentManager content;
有了这个,我可以通过
加载任何类中的任何内容Game1.content.Load<T>()
特别是对于较大的项目,我建议不要在Game1&#39;中加载所有数据。 LoadContent()因为您可能会加载很多启动时不需要的内容(例如来自未访问级别的关卡数据),这会在游戏变大时显着降低游戏启动速度。< / p>
如果真的需要像构造函数那样加载内容。
答案 1 :(得分:0)
您可以创建一个抽象基类,从中派生所有可加载类。
然后,在基类构造函数中,将您的类添加到静态集合(例如List<T>
)。在静态方法中,对集合中的每个类调用LoadContent
方法。
唯一的问题是这些类需要在处理之前从集合中删除。最好坚持当前的实施。