我有一个使用 XNA(用 C# 编写)创建的 WindowsGameLibrary。它包括自己对 Game 类的扩展。无论出于何种原因,LoadContent 的覆盖版本永远不会被调用。我在论坛中读到,这可能是由于意外覆盖 Initialize 而没有在最后添加 base.Initialize() 造成的,但我确保拥有它,但它仍然不起作用。我会注意到包含 Game 扩展名的命名空间与其中包含“Program”类的实际 WindowsGame 项目的命名空间是分开的,尽管我认为这无关紧要。下面是我的代码:
public AttunedGame()
{
// Singleton
if (Instance == null) Instance = this;
this.currentArea = "";
}
protected override void Initialize()
{
// Managers
graphics = new GraphicsDeviceManager(this);
currentGameTime = new GameTime(new TimeSpan(0), new TimeSpan(0));
// Areas
areas = new CollectibleCollection<Area>();
foreach (string a in Directory.EnumerateDirectories(@"content\areas"))
{
areas.Add(new Area(a));
areas.Get(Collectible.IDFromPath(a)).Initialize();
}
base.Initialize();
}
protected override void LoadContent()
{
spriteBatch = new AnimatedSpriteBatch(this.GraphicsDevice);
}
// Main loop methods
protected override void Update(GameTime gameTime)
{
currentGameTime = gameTime;
CurrentArea.Update();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
currentGameTime = gameTime;
SpriteBatch.Begin();
CurrentArea.Draw();
SpriteBatch.End();
base.Draw(gameTime);
}
我在此处显示的每个方法中都放置了断点,以查看程序流向何处。它首先命中构造函数,然后是 Initialize(我一次通过一行直到结束),然后进入 Update,然后是 Draw。我什至让它循环了一段时间,它从来没有到达 LoadContent。
非常感谢您的帮助。