为什么 Loadcontent 已经在 Initialize() 方法中执行了?
Why is Loadcontent already executed inside Initialize() method?
我正在 Visual Studio 中试用 XNA / Monogame。我发现文档在解释主要 XNA 结构如何运行方面有些欠缺。据我了解, Game1.Initialize() 在 Game1.LoadContent().
之前被调用
但是在这个代码示例中,我发现内容实际上已经在初始化函数中加载了。在此代码示例中,您将看到 "---1---" 在 "---2---"[=24 之前登录到控制台中=].这是为什么?
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
那是因为你在方法的开头调用了base.Initialize()
,然后调用了LoadContent
方法。对基础 class 实现(包括 base.Initialize()
和 base.LoadContent()
)的调用应该始终在相应方法的末尾。
我正在 Visual Studio 中试用 XNA / Monogame。我发现文档在解释主要 XNA 结构如何运行方面有些欠缺。据我了解, Game1.Initialize() 在 Game1.LoadContent().
之前被调用但是在这个代码示例中,我发现内容实际上已经在初始化函数中加载了。在此代码示例中,您将看到 "---1---" 在 "---2---"[=24 之前登录到控制台中=].这是为什么?
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
那是因为你在方法的开头调用了base.Initialize()
,然后调用了LoadContent
方法。对基础 class 实现(包括 base.Initialize()
和 base.LoadContent()
)的调用应该始终在相应方法的末尾。