由于某种原因,我的组件中没有调用LoadContent方法。 例如,我有Game类:
//Game.cs
protected override void LoadContent() {
editor = new Editor(...);
Components.Add(editor);
}
//Editor.cs
public class Editor : DrawableGameComponent{
Game game;
public Editor(Game game, ...):base(game){
this.game = game;
}
//THIS method never gets called!
protected override void LoadContent() {
background = game.Content.Load<Texture2D>("background");
base.LoadContent();
}
}
任何提示?
编辑:当你记住Initialize和LoadContent的顺序时,一切正常!
答案 0 :(得分:14)
我怀疑你的麻烦是由于Initialize功能造成的。 LoadContent
调用Initialize
。您需要检查两件事:
base.Initialize()
之前,验证您是否在Game.cs中创建和添加可绘制游戏组件。在上面的代码中,您将在Game.cs的LoadContent
函数中创建和添加组件,该函数发生在Initialize
之后。验证Initialize
类中的Editor
函数是否正在调用基本Initialize
函数:
public override void Initialize()
{
base.Initialize();
}
查看Nick Gravelyn的blog post了解更多信息。与你的问题特别相关的是,尼克写道:
答案 1 :(得分:4)
如果在调用base.Initialize之前尚未注册GraphicsDeviceManager,则不会调用LoadContent。以下代码正确注册了游戏的GraphicsDeviceManager。
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
}
protected override void Initialize()
{
base.Initialize();
}
}