base.Update 和 base.Draw 在 Monogame 中的作用?
Function of base.Update and base.Draw in Monogame?
我正在学习 this website 中的基本 Monogame 教程。
我不明白的是为什么 Game1.cs 包含对 base.Update 和 base.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(...)
过滤后的 GameComponentCollection
,IGameComponent
.
的集合
IGameComponent
是一个显示 XNA 和 Monogame 希望您如何管理代码的界面。它带有其他接口,例如 IUpdateable
和 IDrawable
。另外两个 class 实现这些接口并提供逻辑:GameComponent
和 DrawableGameComponent
.
这些界面和 classes 背后的想法是游戏的所有组件都具有相似的 update/draw 循环。它标准化了方法的名称和参数(Initialize、LoadContent、Update、Draw 等),并提供了自定义组件的框架。根据您的 classes 是否需要更新、绘制或其中 none,您可以继承这些 classes。
这是 GameComponentCollection
操作的地方:您可以将组件添加到 Game.Components
,基础游戏 class 将通过调用 Update() 和 Draw() 自动处理更新周期没有你的干预。您还可以通过 GameComponent
和 DrawableGameComponent
.
设置具有属性的组件之间的调用顺序
无论如何,似乎有些人(包括我在内)和许多教程并没有在他们的代码中使用这种可能性。您可以自己从自定义 class 中自由调用 Initialize、LoadContent、Update 和 Draw。在这种情况下,您的程序似乎不需要调用 base.Update(...)
和 base.Draw(...)
。
我正在学习 this website 中的基本 Monogame 教程。 我不明白的是为什么 Game1.cs 包含对 base.Update 和 base.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(...)
过滤后的 GameComponentCollection
,IGameComponent
.
IGameComponent
是一个显示 XNA 和 Monogame 希望您如何管理代码的界面。它带有其他接口,例如 IUpdateable
和 IDrawable
。另外两个 class 实现这些接口并提供逻辑:GameComponent
和 DrawableGameComponent
.
这些界面和 classes 背后的想法是游戏的所有组件都具有相似的 update/draw 循环。它标准化了方法的名称和参数(Initialize、LoadContent、Update、Draw 等),并提供了自定义组件的框架。根据您的 classes 是否需要更新、绘制或其中 none,您可以继承这些 classes。
这是 GameComponentCollection
操作的地方:您可以将组件添加到 Game.Components
,基础游戏 class 将通过调用 Update() 和 Draw() 自动处理更新周期没有你的干预。您还可以通过 GameComponent
和 DrawableGameComponent
.
无论如何,似乎有些人(包括我在内)和许多教程并没有在他们的代码中使用这种可能性。您可以自己从自定义 class 中自由调用 Initialize、LoadContent、Update 和 Draw。在这种情况下,您的程序似乎不需要调用 base.Update(...)
和 base.Draw(...)
。