1.8 游戏测试与游戏选项卡

至此,已经使用Unity自带原型包(Prototyping Package)完成了金币采集游戏环境的构建。现在的游戏环境包含了两个主要的岛屿,岛屿上有一些建筑物,两个独立的岛屿通过一个石桥连接在一起,如图1.40所示。可能你的布局与图1.40看起来有一些不同,不过也是非常不错的。

Unity的游戏卡_游戏

总的来看,场景还是完成得不错,现在需要把这个场景保存一下。可以选择按下键盘上的“Ctrl + S”组合键,或者也可以如图1.41所示,从应用程序菜单上选择“File | Save Scene”选项。如果是第一次对场景进行保存,Unity会弹出一个“Save”对话框,提示为这个场景起一个名字(这里本书将这个场景起名为“level__01”)。

Unity的游戏卡_应用程序_02

完成这个场景的保存之后,它就成为了当前项目的场景资源,同时也如图1.42一样出现在了项目(Project)面板中。这意味着当前的场景已经不再像以前是一个临时拼凑在一起的组合了,而是一个真正不可分割的整体。注意,对一个场景进行保存与对一个项目进行保存并不一样,比如在应用程序菜单上就分别有“Save Scene”和“Save Project”两个不同的选项。记住,一个项目是一些文件和文件夹的集合,它包含了游戏中的场景和资源。相比之下,一个场景是项目中的一个资源,外观就像是一个完整的3D地图。这个场景中包含了很多网格、纹理和声音。因此,保存一个项目是指将包括场景在其中的各种文件和资源的配置进行保存。而对场景的保存,只是将指定场景中关卡的变化进行保存。

Unity的游戏卡_Game_03

注意 

从图1.42可以看出,已经将场景保存到了一个名为“scenes”的文件夹中。可以在项目(Project)面板上的任意空白区域单击鼠标右键来为自己的项目创建一个文件夹。另外,依次单击应用程序菜单上的“Assets | Create | Folder”,就可以轻易地使用鼠标拖放来完成对文件夹中的资源进行移动操作。

现在的这个关卡中并没有任何可以玩的东西。它只是一个使用编辑器开发出来的静止的、了无生趣的且与外界毫无交互行为的三维环境。现在给游戏添加可玩性,允许玩家通过控制键盘上的“W”“A”“S”“D”以第一人称视角的方式在这个游戏世界中进行环游和探索。为了实现这个目标,需要向场景中添加一个第一人称视角角色控制器(First-person Character Controller),它是Unity中自带的资源,本身已经包含了实现第一人称视角角色控制的所有功能。依次打开“Standard Assets | Characters | FirstPerson Character | Prefabs”文件夹,然后从项目(Project)面板拖动“FPSController”资源到场景中,如图1.43所示。

Unity的游戏卡_选项卡_04

当添加了第一人称视角角色控制器以后,就可以单击Unity工具栏上的“Play”按钮以第一人称视角模式来进行游戏,如图1.44所示。

Unity的游戏卡_应用程序_05

按下“Play”按钮之后,Unity就可以从场景(Scene)选项卡切换到游戏(Game)选项卡,正如所看到的,场景(Scene)选项卡是以一个开发者的视角来观看整个场景的,此时可以对场景进行编辑、制作和设计。相比之下,游戏(Game)选项卡是以一个游戏者的视角来查看整个场景的,只能进行游戏和测试。在游戏者的视角中,只能从主摄像机的角度来查看所有的场景。当激活了游戏(Game)选项卡,并启动“Play”模式后,可以使用游戏默认的控制方式开始这个游戏的测试工作。第一人称视角控制器使用键盘上的“W”“A”“S”“D”4个键来控制运动,使用鼠标来控制视角,如图1.45所示。

Unity的游戏卡_选项卡_06

注意 

即使处于“Play”模式中,也可以随时切换到场景(Scene)选项卡中,甚至可以对场景进行编辑和修改,对场景中的对象进行移动和删除。但是要注意的是,所有,在“Play”模式期间进行的改动,在“Play”模式结束之后都会自动复原,也就是这些改动都不会被保留。这是一种特意的设计,它允许在游戏过程中对属性进行编辑,从而可以观察产生的影响,并对问题进行调试,但是却并不真正地对场景进行改动。

现在的关卡中已经可以实现以第一人称视角模式行走了。当结束游戏时,可以再一次单击“Play”按钮,或者按下键盘上的“Ctrl+P”组合键,之后就返回到场景(Scene)选项卡中了。

注意 

Unity中还提供了用来暂停和恢复游戏的“Toggle-Pause”按钮。

到现在为止,你应该已经注意到了,当在关卡中以第一人称视角控制器进行游戏的时候,在下面的控制台(Console)窗口中不断地输出一些信息。默认情况下,这个窗口位于Unity编辑器的下方,就在项目(Project)面板旁边,也可以通过在菜单栏上依次选中“Window|Console”人为地打开这个窗口。控制台(Console)窗口会将所有遇到的错误或者警告以消息的形式显示出来。错误都会以红颜色标记,警告都会以黄颜色进行标记,而普通的信息则会以默认的灰色显示。有时,一条消息只会显示一次,而有时却会显示很多次,如图1.46所示。

Unity的游戏卡_应用程序_07

正如之前提到过的,在控制台(Console)窗口中可以输出3种不同类型的消息:信息、警告和错误。信息是指基于当前工作的项目给出的最佳建议和意见。警告是指在代码或者场景中出现了一些不太严重的问题,如果不改正,则可能会导致游戏中出现意想不到的行为以及不佳的游戏性能。错误消息描述了需要立即引起注意的代码和场景中的错误。有时,这些错误导致游戏根本无法工作,或者在运行的时候发生错误,从而引起游戏崩溃或者失去响应。此时控制台(Console)窗口就显得十分有用了,因为它可以实现对游戏进行调试。图1.46中就给出了一个关于“Audio Listener”重复的问题。

“Audio Listener”是一个连接到摄像机对象的组件。默认情况下,每一个摄像机都有一个“Audio Listener”组件,它像是一个耳朵,在摄像机所在的位置接收场景中的各种声音。但是,Unity中并不支持在同一场景中使用多个处于激活状态的“Audio Listener”。这也就意味着在同一地点同一时间只能听到一个声音。那么问题就产生了,因为现在的场景中已经包含了两个摄像机,其中一个是在创建场景时自动产生的,另外一个是添加的第一人称视角控制器中自带的。若想确认这一点,只需要在层次(Hierarchy)面板上选中第一人称视角控制器对象,之后单击它名字旁边的三角形图标,这样就会在这个物体的下方显示更多的对象,这些对象都是第一人称视角控制器的组成部分,如图1.47所示。

Unity的游戏卡_Game_08

选中位于“FPSController”下方展开之后显示的“FirstPersonCharacter”对象,如图1.47所示。“FirstPersonCharacter”对象是“FPSController”对象的一个子对象。这一点从层次(Hierarchy)面板上的“FPSController”中包含了“FirstPersonCharacter”就可以看出来。子对象会继承它们上一级对象的变换(Transformation)属性。这表示当在场景中对某些对象进行移动或者旋转操作时,所做的变换同样会影响到它的所有子对象。在检查(Inspector)面板中,可以看到这个对象包含一个“Audio Listener”组件,如图1.48所示。

Unity的游戏卡_选项卡_09

也可以选择将“Audio Listener”组件从FPSController对象上移除,但是这样做,游戏者在以第一人称视角进行游戏时就再也听不到声音了。所以,选择将场景创建之初自带的摄像机删除。只需要在层次(Hierarchy)面板上选中图1.49所示的摄像机,然后按下键盘上的“Delete”键即可完成删除操作。这样就可以消除在游戏进行时产生的关于“Audio Listener”的警告。现在可以开始游戏的试玩了!

Unity的游戏卡_Game_10