base.Update 和 base.Draw 在 Monogame 中的作用?

Function of base.Update and base.Draw in Monogame?

我正在学习 this website 中的基本 Monogame 教程。 我不明白的是为什么 Game1.cs 包含对 base.Updatebase.Draw 的调用?如果我删除这些函数调用,它似乎不会以任何方式影响我的游戏...

代码Game1.cs

        protected override void Update (GameTime gameTime)
        {       
             // update my car class
             _myCar.Update();
            // what does this do? It seems I can leave it out?
            base.Update (gameTime);
        }

        protected override void Draw (GameTime gameTime)
        {
            // draw my car
            _spriteBatch.Begin ();
            _myCar.Draw (_spriteBatch);
            _spriteBatch.End ();

            // what does this do?
            base.Draw (gameTime);
        }

根据 Dylan Wilson 链接的 source code of MonoGame,基础 class 游戏中的更新和绘制方法刚刚在每个元素上调用了 Update(...)Draw(...)过滤后的 GameComponentCollectionIGameComponent.

的集合

IGameComponent 是一个显示 XNA 和 Monogame 希望您如何管理代码的界面。它带有其他接口,例如 IUpdateableIDrawable。另外两个 class 实现这些接口并提供逻辑:GameComponentDrawableGameComponent.

这些界面和 classes 背后的想法是游戏的所有组件都具有相似的 update/draw 循环。它标准化了方法的名称和参数(Initialize、LoadContent、Update、Draw 等),并提供了自定义组件的框架。根据您的 classes 是否需要更新、绘制或其中 none,您可以继承这些 classes。

这是 GameComponentCollection 操作的地方:您可以将组件添加到 Game.Components,基础游戏 class 将通过调用 Update() 和 Draw() 自动处理更新周期没有你的干预。您还可以通过 GameComponentDrawableGameComponent.

设置具有属性的组件之间的调用顺序

无论如何,似乎有些人(包括我在内)和许多教程并没有在他们的代码中使用这种可能性。您可以自己从自定义 class 中自由调用 Initialize、LoadContent、Update 和 Draw。在这种情况下,您的程序似乎不需要调用 base.Update(...)base.Draw(...)