C# 使用Xna以外的资源';s";游戏“;班

C# 使用Xna以外的资源';s";游戏“;班,c#,xna,C#,Xna,我正在尝试创建一个静态类,它将保存我游戏的所有默认资源,就像所有可能的字体一样,并在我的类中使用它们 例如: 我想创建一个DefaultResources静态类,该类将保存一个SpriteFont列表,并且在列表的每个元素中都将存储一种与我的资源不同的字体。 我的问题是,我必须使用ContentManager类,该类位于继承自Microsoft.Xna.Framework.Game的“Game1”类中,但我需要在该类之外使用它 这是可能的吗?您实际上不需要将类设置为静态,但下面是解决问题的方法。

我正在尝试创建一个静态类,它将保存我游戏的所有默认资源,就像所有可能的字体一样,并在我的类中使用它们

例如: 我想创建一个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);
    }
}