为什么 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())的调用应该始终在相应方法的末尾。