C# 使用Xna以外的资源';s";游戏“;班
我正在尝试创建一个静态类,它将保存我游戏的所有默认资源,就像所有可能的字体一样,并在我的类中使用它们 例如: 我想创建一个DefaultResources静态类,该类将保存一个SpriteFont列表,并且在列表的每个元素中都将存储一种与我的资源不同的字体。 我的问题是,我必须使用ContentManager类,该类位于继承自Microsoft.Xna.Framework.Game的“Game1”类中,但我需要在该类之外使用它C# 使用Xna以外的资源';s";游戏“;班,c#,xna,C#,Xna,我正在尝试创建一个静态类,它将保存我游戏的所有默认资源,就像所有可能的字体一样,并在我的类中使用它们 例如: 我想创建一个DefaultResources静态类,该类将保存一个SpriteFont列表,并且在列表的每个元素中都将存储一种与我的资源不同的字体。 我的问题是,我必须使用ContentManager类,该类位于继承自Microsoft.Xna.Framework.Game的“Game1”类中,但我需要在该类之外使用它 这是可能的吗?您实际上不需要将类设置为静态,但下面是解决问题的方法。
这是可能的吗?您实际上不需要将类设置为静态,但下面是解决问题的方法。让您的资源类公开一个可用于传递内容管理器的公共方法
static class DefaultResourceManager
{
private static ContentManager Manager;
public static void Initialize(ContentManager manager)
{
Manager = manager;
// Load resources and export them as public properties / methods
}
}
然后在游戏中:
class MyAwesomeGame : Game
{
public override void LoadContent()
{
DefaultResourceManager.Initialize(this.content);
}
}
如果选择不使用静态类(这总是更好):
如果您只有该列表,您不需要整个类,您只需在
Game1
类中声明您的列表
,并将其设置为静态
,这样您就可以从任何地方访问它。我不知道我怎么会没有想到这一点。非常感谢。
class DefaultResourceManager
{
private ContentManager manager;
public DefaultResourceManager(ContentManager manager)
{
this.manager = manager;
// Load resources and export them as public properties / methods
}
}
class MyAwesomeGame : Game
{
private DefaultResourceManager manager;
public override void LoadContent()
{
this.manager = new DefaultResourceManager(this.content);
}
}