我正在尝试创建一个静态类,它将保存我的游戏的所有默认资源,例如所有可能的字体,并在我的类中使用它们。
例如:我想创建一个 DefaultResources 静态类,该类将保存一个 SpriteFont 列表,并且在列表的每个元素中都将存储与我的资源不同的字体。我的问题是我必须使用继承自 Microsoft.Xna.Framework.Game 的“Game1”类中的 ContentManager 类,但我需要在此类之外使用它。
这可能吗?
你真的不需要让你的类静态,但这是你的问题的解决方案。让您的资源类公开一个可用于传递内容管理器的公共方法。
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);
}
}
如果你只有那个列表,你不需要整个班级,你可以简单地List<SpriteFont>
在你的Game1
班级中声明你的并将其设置为static
,这样你就可以从任何你想要的地方访问它。恕我直言