使用Xna“Game”类之外的资源

时间:2013-08-17 16:38:04

标签: c# xna

我正在尝试创建一个静态类,它将为我的游戏保存所有可能的字体,并在我的课程中使用它们。

例如: 我想创建一个DefaultResources静态类,它将包含一个SpriteFont列表,并且在列表的每个元素中将存储与我的资源不同的字体。 我的问题是我必须使用在我的“Game1”类中找到的ContentManager类,该类继承自Microsoft.Xna.Framework.Game,但我需要在此类之外使用它。

这可能吗?

2 个答案:

答案 0 :(得分:2)

你真的不需要让你的课静态,但这是你的问题的解决方案。让您的资源类公开可用于传递内容管理器的公共方法。

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);
    }
}

如果您选择不使用静态类(总是更好):

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);
    }
}

答案 1 :(得分:0)

如果您只有该列表,则不需要整个课程,只需在List<SpriteFont>课程中声明Game1并将其设为static,即可访问它来自你想要的任何地方。 IMHO