使用 XNA 创建游戏/编程/可重用组件
有很多组件可以轻松地用于其他游戏。例如 3D 雷达抬头显示 [3D 雷达 HUD]。在本节中,我们将展示一些最常见的组件,并特别展示在何处找到大量此类组件的链接。之后,我们将介绍如何使用 XNA Framework 创建自己的游戏组件,这些组件可以在以后重复使用。
该 游戏状态管理示例 代表游戏的菜单系统,并通过切换屏幕对用户输入做出反应。起点是主菜单,其中包含三个条目:播放、选项和退出。
在这个示例中,存在几个 GameScreen
类的实例,它们由 ScreenManager
类管理。GameScreen
是一个抽象类,通过其更新、处理输入和绘制方法为菜单系统中使用的所有其他屏幕创建基础。表示不同屏幕的其他类扩展了 GameScreen
类。实际的游戏玩法也是一个屏幕,必须设置在 GameplayScreen
类中。
MenuEntry
是一个辅助类,用于创建菜单(MenuScreen
类)的单个条目,该条目在被选中时会发送事件 OnSelectEntry
。在这个示例中,菜单条目只是一个字符串,但您可以根据您的游戏设计修改表示形式。MenuScreen
类的对象将包含菜单条目的集合和当前选中条目的索引。
在创建的 Game
类中有一个 ScreenManager
类的实例,并且添加了两个屏幕:第一个用于背景,第二个用于主菜单。
您还可以在下面的链接章节中找到主菜单的其他一些示例,包括用于多人网络游戏的类似解决方案,其中包含用于维护会话和错误处理的菜单。
每个游戏都包含一些元素,帮助玩家跟踪进度。例如,如果你获得了一些奖励,它们将显示在屏幕上。其他示例可能是血条、生命数量和分数计数器。所有这些都是游戏的常见部分,可以使用游戏组件实现。
有一个可重用库 XNA 可重用 UI 组件 提供这些组件。它包含四个类
条
计数器
计时器
通用组件
要使用这些组件,请下载库,解压缩 .dll 文件并将其作为引用添加到您的项目中。现在您可以创建您需要的类的对象并设置属性值。例如,这些是条位置、分数值等。现在,您可以在 Game
类的绘制方法中添加对实例绘制方法的调用。
该库还提供事件处理:如果达到最小值或最大值,则会发送事件。这些事件可以被覆盖,因此您可以决定如果玩家没有生命或燃料了该怎么办。
该库的详细文档可以在 这里 找到。
3D 雷达 HUD 是 HUD 的另一个示例,它展示了如何使用 2D 抬头显示将 3D 雷达集成到 3D 游戏中。
好的,我们已经了解到,如果您正在编写可能在下一个项目中需要的内容,那么创建游戏组件通常是一个非常好的主意。现在让我们谈谈如何做到这一点。XNA Framework 提供了一些用于此目的的类,使用它们,您将能够创建一个新的游戏组件,您可以在以后重复使用和/或共享。
要做到这一点,请创建一个扩展 Microsoft.Xna.Framework.GameComponent
或 Microsoft.Xna.Framework.DrawableGameComponent
类的类。在类构造函数中,您必须将对 Game
实例的引用作为参数传递。
如果您将包含处理用户输入的功能的类派生自 GameComponent
类,例如,对按下特定键做出反应。在这种情况下,将有两个方法要覆盖
- 初始化
- 更新
如果要将某些内容绘制到屏幕上,则应使用 DrawableGameComponent
类。它扩展了前一个类,并且还有一些其他方法,包括
- 加载内容
- 卸载内容
- 绘制
这里有一些教程,您可能需要查看它们,以了解有关创建游戏组件的更多信息,并找到一些示例
下面列出的一些资源包含可以下载并在游戏中使用的完整项目。但是,还有一些教程展示了创建特定组件的过程。
玛丽亚(维基登录名:jasna)