为什么Loadcontent已在Initialize()方法中执行?

时间:2015-03-15 11:34:42

标签: c# xna

我在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

1 个答案:

答案 0 :(得分:3)

这是因为您在方法的开头调用base.Initialize(),然后调用LoadContent方法。对基类实现的调用(包括base.Initialize()base.LoadContent())应始终位于相应方法的末尾。