我正在尝试创建一个静态类,它将为我的游戏保存所有可能的字体,并在我的课程中使用它们。
例如: 我想创建一个DefaultResources静态类,它将包含一个SpriteFont列表,并且在列表的每个元素中将存储与我的资源不同的字体。 我的问题是我必须使用在我的“Game1”类中找到的ContentManager类,该类继承自Microsoft.Xna.Framework.Game,但我需要在此类之外使用它。
这可能吗?
答案 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