0

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

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

这可能吗?

4

2 回答 2

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);
    }
}
于 2013-08-17T16:59:56.837 回答
0

如果你只有那个列表,你不需要整个班级,你可以简单地List<SpriteFont>在你的Game1班级中声明你的并将其设置为static,这样你就可以从任何你想要的地方访问它。恕我直言

于 2013-08-17T17:59:21.643 回答