我在Visual Studio中尝试XNA / Monogame。我发现文档在解释主XNA结构如何运作方面有些缺乏。据我所知,Game1.Initialize()在Game1.LoadContent()之前被调用。
但是在这个代码示例中,我发现内容实际上已经在初始化函数内部已经加载了。在此代码示例中,您将看到“--- 1 ---”在“--- 2 ---”之前在控制台中记录。这是为什么?
GAME1.CS
protected override void Initialize()
{
base.Initialize();
// SOMEHOW LOADCONTENT HAS NOW ALREADY BEEN EXECUTED?
Console.WriteLine("----2---- STILL EXECUTING INIT CODE");
}
protected override void LoadContent()
{
Console.WriteLine("----1---- GAME1 LOADS CONTENT");
AssetsManager.LoadContent(this);
SpriteBatch = new SpriteBatch(GraphicsDevice);
}
控制台输出:
----1---- GAME1 LOADS CONTENT
----2---- STILL EXECUTING INIT CODE
答案 0 :(得分:3)
这是因为您在方法的开头调用base.Initialize()
,然后调用LoadContent
方法。对基类实现的调用(包括base.Initialize()
和base.LoadContent()
)应始终位于相应方法的末尾。