Xna LoadContent在我的组件中不起作用
由于某些原因,我的组件中没有调用LoadContent方法。 例如,我有一个游戏类,我在其中做:Xna LoadContent在我的组件中不起作用,xna,Xna,由于某些原因,我的组件中没有调用LoadContent方法。 例如,我有一个游戏类,我在其中做: //Game.cs protected override void LoadContent() { editor = new Editor(...); Components.Add(editor); } //Editor.cs public class Editor : DrawableGameComponent{ Game game; public Editor(Game gam
//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();
}
}
//Game.cs
受保护的覆盖void LoadContent(){
编辑器=新编辑器(…);
组件。添加(编辑器);
}
//Editor.cs
公共类编辑器:DrawableGameComponent{
游戏;
公共编辑器(游戏…):基地(游戏){
这个游戏=游戏;
}
//这个方法永远不会被调用!
受保护的覆盖void LoadContent(){
背景=游戏.Content.Load(“背景”);
base.LoadContent();
}
}
有什么建议吗
编辑:当你记住初始化和加载内容的顺序时,一切都很好 我怀疑您的问题是由于该功能引起的<代码>加载内容由
初始化
调用。您需要检查两件事:
base.Initialize()
之前,确认您正在game.cs中创建并添加可绘制游戏组件。在上面的代码中,您正在Game.cs的LoadContent
函数中创建和添加组件,该函数在初始化之后发生
编辑器中的初始化
函数是否正在调用基本初始化
函数:
public override void Initialize()
{
base.Initialize();
}
如果GraphicsDeviceManager在base.Initialize之前未注册,则不会调用LoadContent。以下代码为游戏正确注册了GraphicsDeviceManager
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
}
protected override void Initialize()
{
base.Initialize();
}
}
谢谢,你让我发现了我的问题。我把答案放在我的问题里了!新链接到非活动博客。非常感谢!!!每个人对这个问题的评论似乎都包括“确保调用base.Initialize()”,但这绝对是一个关键点。我一直在努力解决这个问题,你终于帮了我一把。奇怪的是,你甚至不需要给GraphicsDeviceManager分配什么。您可以神奇地调用
newgraphicsdevicemanager(this)代码>并且它工作得很好。显然,按原样,您有一个对它的引用的好处,但它似乎只是“单击”并不管如何工作。