本文介绍如何在Unity通过使用命令模式实现回放功能,撤销功能和重做功能,你可以使用该方法来强化自己的策略类游戏。
原博地址:https://www.raywenderlich.com/3067863-implementing-the-command-pattern-in-unity
原文链接:https://connect.unity.com/p/zai-unityshi-xian-you-xi-ming-ling-mo-shi?app=true
作者:Najmm Shora 预计阅读时间:20分钟
Unity版本:Unity 2019.1
你是否想知道《超级食肉男孩》(Super Meat Boy)等游戏是如何实现回放功能的?其中一种方法是执行和玩家完全相同的输入操作,这样意味着输入需要保存起来。命令模式可以实现该功能,以及更多其它功能。
如果希望在策略游戏里实现撤销和重做功能,命令模式也非常实用。
在本教程中,我们会使用C#实现命令模式,然后使用命令模式来遍历3D迷宫中的机器人(bot, 文中bot,机器人交替出现,请整理一下)角色。在这个过程中,我们会学习到以下内容:
-
命令模式的基础知识。
-
实现命令模式的方法。
-
对输入命令进行排队,推迟这些命令的执行。
-
在执行前,撤销和重做发出的命令。
备注:阅读本文需要熟悉Unity的使用,并且拥有对C#有一定的了解。本教程使用Unity 2019.1和C# 7。
准备过程
跟随本教程进行学习时,请下载文末链接的项目素材文件。解压文件,在Unity中打开Starter项目。
打开RW/Scenes文件夹,打开Main场景。我们会注意到,场景中有一个迷宫和机器人,旁边有终端UI显示指令。地面上有网格,当玩家在迷宫中移动机器人时,这些网格有助于玩家进行观察。
单击Play按钮后,我们发现指令不会进行工作,这是因为我们还没添加该功能,我们将在教程中添加功能。 场景中最有趣的部分是Bot游戏对象,在层级窗口单击选中该对象。
在检视窗口查看该对象,我们看到它带有Bot组件。我们会在发出输入命令时使用该组件。
了解Bot对象的逻辑
打开RW/Scripts文件夹,在代码编辑器打开Bot脚本。我们不必了解Bot脚本会做什么,但要注意其中的Move方法和Shoot方法。我们也不用知道二个方法中的代码作用,但需要了解如何使用二个方法。
我们发现,Move方法会接收一个类型为CardinalDirection的输入参数。CardinalDirection是一个枚举,类型为CardinalDirection的枚举对象可以为Up,Down,Right或Left。根据所选的CardinalDirection不同,机器人会在网格上朝着对应方向移动一个网格。
Shoot方法可以让机器人发射炮弹,摧毁黄色的墙体,但对其它墙体毫无作用。
现在查看ResetToLastCheckpoint方法,为了了解它的功能,我们要观察迷宫。在迷宫中,有一些点被称为检查点。为了通过迷宫,机器人应该到达绿色检查点。
在机器人穿过新检查点时,该点会成为机器人的最后检查点。ResetToLastCheckpoint方法会重置机器人的位置到最后检查点。
我们目前无法使用这些方法,但我们很快就会用到了。首先&