2.5 实战项目:《梦幻天堂》游戏的设计与实现
在本节中,我们将带领大家开发一款名为《梦幻天堂》的小游戏。
2.5.1 《梦幻天堂》的策划与设计
开发任何一款产品,无论是游戏还是行业应用,首先要做的事情不是直接打开开发工具,而是先进行产品的策划与设计。
接下来,我们会用简单的几句话描述一下这款游戏产品的策划和设计。
1. 游戏背景
这里简单创建了一个原创的游戏背景。
在另一个平行宇宙之中,有一个名为阿斯塔诺的星球。阿斯塔诺星球上有一块名为赛比安的大陆。在赛比安大陆上居住着各种充满智慧的精灵生物,它们无忧无虑地生活在这块广袤的大陆上。
直到有一天,某种邪恶的暗黑生物从天而降,夺走了精灵圣堂传承的宝物,想要用暗黑能量毁灭整个大陆,从而为自己的位面注入暗黑能量。危急时刻,赛比安大陆的精灵生物团结起来,和暗黑生物展开了生死搏斗。幸运的是,暗黑生物最终被击溃,四散逃去。不幸的是,圣堂神器在战斗中损毁了,化为7个碎片遁入阿斯塔诺星球的各个角落。
失去了圣堂神器的精灵生物不再像以往那样爱好和平,也不再像以前那样无忧无虑,部分精灵甚至因为吸收了暗黑生物的暗黑能量而变得凶残。但赛比安大陆大体上还是一片乐土。
数千年后,一个名叫卡萨的精灵生物因为向往暗黑能量的强大,选择了投靠暗黑生物。他试图召集大陆上所有残存的暗黑生物,重新打开通往暗黑位面的时空传送门。在发现了卡萨的行为之后,精灵生物们一片恐慌。危难之际,作为阿斯塔诺的拯救者,你必须和自己的队友一起探索整个大陆,尽快找回失落的圣堂神器碎片。在这个过程中,你还要尽可能阻止卡萨的阴谋,以免整个星球陷入暗黑生物的魔爪。
《梦幻天堂》这个小游戏就发生在这样的故事背景下。
2. 游戏概述
《梦幻天堂》游戏是一款第一人称视角的冒险游戏。玩家进入游戏之后,会发现自己身处迷雾森林的边缘。在这里,玩家需要尽快找到失落的神器碎片,并击败任何你所碰到的暗黑生物。简单起见,我们在这部分内容中只需要实现让玩家探索自己所在的区域,并抵达指定的位置即可。
3. 游戏场景
《梦幻天堂》游戏只有一个主场景,但是后续可以根据需要添加更多的子场景,如图2-33所示。
图2-33 《梦幻天堂》游戏场景
4. 游戏规则
《梦幻天堂》的游戏规则很简单:在当前的自由模式下,只需要在场景中自由探索并找到目标地点。在后续的生存模式下,可以添加倒计时机制以及可能会攻击玩家的NPC角色等。
好了,我们的第一款游戏的策划就这样完成了。
2.5.2 创建一个新项目
打开Unity Hub,在左侧选项卡中切换到“项目”选项卡,然后点击右上角的“新建”按钮。在项目名称处输入项目名称MyParadise。在“位置”处选择项目的路径,项目的所有资源文件和代码都会存放在里面。
项目模板选择默认的3D(此设置在项目开发过程中可以修改),点击“创建”按钮即可成功创建一个新项目。
2.5.3 搭建游戏场景
《梦幻天堂》这款游戏是唯美魔幻题材,所以我们选择的美术资源画风也得符合游戏背景的设定。
在正常的游戏开发流程中,我们需要先绘制纸面原型(也可是电子版本),然后使用Unity3D中内置的几何体搭建一个原型场景进行测试,最后使用美术人员通过3DS Max或Maya等建模软件所创建的正式场景来替代。简单起见,我们将直接从Unity3D内置的资源商城下载和导入游戏场景的美术资源。
Unity Asset Store游戏资源商城是目前世界上所有商业3D游戏引擎中资源数量最丰富的。它囊括了3D模型、第三方应用、动作、声音、完整项目、服务、着色器、粒子系统、编辑器扩充、脚本、贴图和材质以及Unity Essentials等多种类型的资源素材。
1. 打开Unity Asset Store
从Unity 2020.x.x版本开始,Asset Store不再内置集成到Unity3D编辑器中,因此我们需要在浏览器中打开Unity3D商城的网址(https://assetstore.unity.com/)。
注意,进入Asset Store之后一定要使用之前注册的Unity ID登录,点击右上角的小人图标,然后点击Sign In选项,并使用自己的ID和密码登录,如图2-34所示。
图2-34 使用Unity ID登录Asset Store
2. 搜索所需要的资源
接下来我们在顶部的搜索栏中输入Fantasy Forest Environment-Free Demo,即我们想要用的资源名称。点击搜索的结果进入,就可以看到详细介绍,如图2-35所示。
图2-35 在Asset Store中找到所需的资源包
和苹果App Store以及安卓商城类似,Unity Asset Store对于每个游戏资源都提供了详细的介绍信息,包括资源的基本功能、版本号、文件大小、初始发布日期、适配Unity3D版本、文件包中的具体内容等信息。部分资源还提供了示例视频和效果截图等。
3. 下载并导入资源包
大家可以看到,在资源的右上角有一个蓝色的按钮。如果之前没有下载过,那么这里显示的就是Add to My Assets。点击之后,会看到按钮上显示的是Open in Unity。点击Open in Unity按钮,会看到一个对话提示框,点击打开Unity Editor即可。此时,Unity会自动打开Package Manager视图,并显示想要下载和导入的资源,如图2-36所示。
图2-36 Package Manager视图
先点击Download按钮下载资源,然后点击Import按钮导入项目。点击Import按钮后可以看到一个弹出窗口,里面列出了这个资源包里面包含的所有资源。为了确保导入不遗漏,我们先点击All按钮,再点击Import按钮就好了,如图2-37所示。
图2-37 导入已下载的资源包
导入完成后,在Unity3D编辑器的Project视图区,可以看到已经导入完成的资源。点击三角符号可以查看里面的具体内容。
在Assets\Fantasy Forest Environment Free Sample Scenes中找到demoScene_free,双击将其打开,把它作为游戏的主场景,如图2-38所示。
图2-38 打开demoScene_free场景
2.5.4 添加游戏角色
简单起见,我们仍然从Unity Asset Store中下载所需的角色资源。
打开Unity Asset Store,在里面搜索Standard Assets,然后下载并将其导入当前的项目之中。整个过程和刚才下载并导入游戏场景类似。
注意,因为所使用Unity3D版本的问题,在编辑器的最下面可能会有一些红色的错误警告,这会影响到项目的正常运行。为此,我们需要手动将Assets\Standard Assets\Utility\SimpleActivatorMenu.cs删除。
考虑到这款游戏是第一人称视角,我们需要找到一个第一人称视角的游戏角色,然后把它放到游戏场景之中。
在Project视图中找到Standard Assets\Characters\FirstPersonCharacter\Prefabs目录,里面有两个蓝色图标的文件,分别是FPSController和RigidBodyFPSController两个预设体。此前提到过,预设体是一个游戏对象及其组件的集合,目的是使游戏对象可以被重复使用。一个形象的比喻是,预设体就好比模板,我们可以使用预设体在场景中快速创建一个具有特定组件属性值的游戏对象。这里的FPSController就是一个第一人称视角的预设体。
如何在游戏场景中使用预设体呢?
有两种方式:一种是所见即所得,只需要将预设体从Project视图中拖动到场景中即可;另一种方式是通过代码手动生成预设体的实例对象。这里采用第一种方式。
使用Unity3D编辑器工具栏中的手型工具,配合鼠标定位到场景中的某个合适的位置。左键按住FPSController不放,将其拖动到场景视图或是层级视图中,然后松开鼠标。可以在场景中看到一个绿色线框一样的东西,上面还有一个喇叭图标和一个摄像机图标。这就是我们的游戏主角了,如图2-39所示。
图2-39 角色添加到场景后的场景视图
需要注意的是,FPSController这个游戏对象是有高度的,在Character Controller组件的Height属性中可以看到其高度是1.8。我们需要在Transform组件的Position里面把Y设置成0.9,让角色正好站在地面上。
设置的方法很简单,在层级视图中选中刚刚添加的FPSController游戏对象,然后在检视视图中修改对应的属性就好了,如图2-40所示。
图2-40 设置角色的高度
2.5.5 预览游戏效果
现在场景已经有了,角色也有了,那么怎么才能预览游戏的效果呢?
首先要从Hierarchy视图中删除Camera对象,因为在FPSController预设体上已经自带一个摄像机。然后点击菜单栏上的GameObject→Align With View,从而将视角切换到更合适的位置。最后点击编辑器中间上方的播放控制按钮就好了。
左右移动鼠标,发现角色看到的场景发生了变化。按下电脑键盘上的A、W、S和D键,配合鼠标可以实现前进、后退、左转、右转等操作,并且可以在场景之中任意漫游。除此之外,还可以听到角色的脚步声,如图2-41所示。
图2-41 预览游戏效果
2.5.6 在Windows平台编译运行
当前,我们只是在Unity3D编辑器的游戏视图中预览了游戏效果。如果希望向其他人分享自己的作品,甚至发布到各种应用商城,就需要做一些配置工作。
这里我们以Windows平台为例来说明如何发布。
1)保存游戏。首先保存之前的游戏场景,从菜单栏中依次选择File→Save命令,保存当前场景所做的修改。
2)进行平台配置。在菜单栏中依次选择File→Build Settings命令,在Platform选项区域选择默认的PC,Mac&Linux Standalone选项,如果之前选择的是其他类型的Platform,那么此时需要单击下方的Switch Platform按钮,然后单击Add Open Scenes按钮将当前场景添加进来。单击Build按钮后选择可执行文件保存的路径,然后等待生成可执行文件,如图2-42所示。
图2-42 进行发布平台的设置
3)试运行。在输出的目录中找到MyParadise这个可执行文件,如图2-43所示。
图2-43 找到MyParadise可执行文件
双击打开文件,使用键盘上的A、W、S、D键在场景中自由行走。点击Esc键关闭窗口即可退出游戏。
在Mac平台或Linux平台上编译运行和在Windows平台上几乎没有区别,只是生成的可执行文件格式不同而已。
2.5.7 在Android平台编译运行
为了将作品发布到Android平台,首先要做的事情是完善交互,使用触摸交互替代单击A、W、S、D键方式。除此之外,我们还要完成以下基本操作。
1)在开发设备的操作系统上安装Java开发环境,也就是JDK和JRE。
2)如果是Windows操作系统,我们还需要手动设置环境变量。
如果一切顺利,使用WIN+R快捷键打开Windows的控制台,然后输入CMD命令。在打开的命令提示符窗口中依次输入两行命令,即java -version和javac命令,如果看到如图2-44所示的输出,则表示配置成功了。
图2-44 在Windows控制台中查看java开发环境的配置
3)在安装Unity3D的过程中,我们需要确保勾选了Android Build Support。
4)进行发布平台配置。在菜单栏中依次选择File→Build Settings命令,在Platform选项区域选择Android选项,然后点击右下角的Switch Platform按钮,如图2-45所示。
图2-45 切换发布平台
在完成这步操作后,Switch Platform按钮会变成Build按钮,点击Build按钮,可以生成apk文件并保存到本地。开发者也可以点击Build And Run按钮直接编译到安卓智能手机或平板上,但是要提前开启设备上的开发者模式。关于如何开启设备上的开发者模式,不同品牌的手机或平板会有差异,这里就不再赘述了。
2.5.8 在iOS平台编译运行
Unity3D之所以是一款受欢迎的3D引擎,就在于它强大的跨平台开发支持特性。为了将作品发布到iOS平台,我们需要完成以下步骤。
1)在Mac系统中打开项目。因为Unity3D是一款跨平台的引擎,因此我们可以直接在Mac系统中创建项目,也可以在Mac系统所安装的Unity3D中打开在Windows系统中创建和开发的项目。
2)确保Mac系统中已经安装Xcode开发工具。
3)进行发布平台配置。在菜单栏中依次选择File→Build Settings命令,在Platform选项区域选择iOS,然后点击右下角的Switch Platform按钮,如图2-46所示。
图2-46 切换到iOS平台配置发布
4)生成Xcode项目。在完成前一步操作后,Switch Platform按钮会变成Build按钮,点击该按钮,选择保存的目录,会生成一个Xcode项目。
5)打开Unity-iPhone.xcodeproj,即可在Xcode中打开项目,如图2-47所示。
图2-47 在Xcode中打开项目
6)使用Xcode来编译,并在iPhone/iPad等iOS设备中进行测试。