打开Unity,创建一个新工程,并将其命名为TomAJerry,如图1-1所示。
Location: 工程目录。一定要选择英文路径,中文路径打开时会报错。
Template: 工程模版。《猫捉老鼠》是3D游戏,所以选择3D;如果创建的是2D游戏,就选择2D。
设置完毕后,单击Create project按钮,等资源自动加载完成后,Unity会自动打开。工程创建完成,如图1-2所示。
图1-1 创建工程
图1-2 工程创建完成
由于工程是初次创建,所以除了默认文件和默认文件夹之外,其他的文件和文件夹都需要手动创建,这是资源管理的范畴。谈到资源管理,需要回答的第1个问题是 :Unity默认创建的文件是什么?
在回答这个问题之前,我们先来调整Unity的界面布局。单击界面右上角的布局设置按钮,选择2 by 3选项,如图1-3所示。Unity界面中的各个面板会自动重新排列,整个Unity界面将切换成另一种布局。这里有一点需要提醒大家,为了确保实践的正确性,最好保持自己的界面布局和书中的一致。
图1-3 界面布局
Unity界面中的资源面板Project中有文件夹Assets,是工程的根目录,里面存放了游戏的所有资源,比如脚本、模型、图片、音频和视频等;文件夹Packages是包文件夹,里面存放了所有的外部资源包,这些包是Unity官方为开发者准备的预设功能包,每一个包都封装了一个独立功能,方便开发者直接使用,避免重复开发,如图1-4所示。
图1-4 默认文件夹
本章的实践还用不上这些外部资源包,后续会详细讲解。
现在,只需要厘清文件夹Assets就好。
文件夹Assets中存放了与整个游戏相关的所有资源。一款游戏的资源,其种类不仅丰富多样,如脚本、模型、音频和视频等,而且相互之间还存在着依赖关系,比如一个完整的人物模型需要依赖人物贴图和骨骼动画。这两个特点使游戏资源的分类既要有清晰的划分,又要遵照一个固定的格式。
也不用过分担心,因为这些目录关系到Unity的核心特性——资源读取,所以Unity官方已经为开发者设计了一个合适的分类方案。
为了有一个清晰的划分,Unity创建了几个默认的文件夹,它们的名称是固定的、不可更改的,被称为 默认文件夹(或默认目录)。
假设开发一个计数工具,只需要点一下,它就能计算出文件夹Assets中图片的数量,这个计数脚本就必须放到文件夹Editor下才有效,否则不仅无效,而且会报错。因为Unity只从文件夹Editor中读取编辑器脚本。
倘若有一天,一位程序员心血来潮想把默认文件夹Editor重命名为Edit,那该文件夹将无法被Unity读取、识别,它里面存放的编辑器脚本将失效,同时会导致系统报错。
为了满足开发者的需要,系统允许开发者自定义文件夹和其名称,这些文件夹被称为 自定义文件夹(或自定义目录)。
表1-1所示是默认文件夹和自定义文件夹的描述信息,并列出了5个默认文件夹。
表1-1 Unity文件夹
回到工程,可以看到Assets文件夹下的默认文件夹。
实际上,Unity 2018.4.2f1版本对此做了一些调整,Unity只自动创建文件夹Scenes,其他文件夹未被创建,如图1-5所示。注意,这并不是Unity官方在偷懒,而是因为在开发实践中,有些默认文件夹确实用不到。
图1-5 Assets文件夹
另外,一个文件夹中没有文件,自然就会变成一个空文件夹。重要的是,一个空文件夹在团队协同开发平台上是不允许被上传的,其原因很简单:空文件夹会造成资源浪费。
针对团队协同开发平台,大家目前无须挂心,此处仅仅是为了说明为什么Unity没有自动创建其他默认文件夹。
在开发实践中,如果用到了某个默认文件夹,可以直接手动创建。这里以文件夹Editor为例,把鼠标指针放到Project面板中,单击鼠标右键,选择Create>Folder即可创建一个新文件夹,然后把这个新文件夹重命名为Editor。
为了方便后续开发,还需要提前为Unity设置3类参数,它们分别是通用参数、外部工具参数和工程设置参数。
图1-6所示是通用参数截图。
图1-6 通用参数
Auto Refresh: 自动编译选项。勾选该选项后,每一次修改代码后切换回Unity时,被修改的代码会自动重新编译一次,以保证修改的及时性。反之则不编译。这里勾选该选项。
Load Previous Project on Startup: 当启动Unity时,此选项用于设置是否自动打开上一次正在编辑的游戏。勾选该选项后,每次启动Unity都会自动打开上一次关闭时正在编辑的工程。这里不勾选该选项。
Compress Assets on Import: 自动压缩资源选项。勾选该选项后,当切换开发平台时,Unity会自动把游戏资源进行重新压缩,比如把游戏发布平台从PC端切换到移动端后,所有系统自动压缩的游戏资源都会以新的压缩方式进行重新压缩。重新压缩的过程会花费很长的时间,在游戏的开发阶段不建议勾选该选项。在游戏的发布阶段,需要把开发平台从PC端切换到移动端时再勾选该选项即可。
External Script Editor: 外部脚本编辑器选项。该选项默认选择的是官方自主研发的Mono Develop。但是只要提到编辑器,大家公认的还是微软的Visual Studio(简称VS),它不仅功能强大而且稳定通用。这里选择Visual Studio 2017,如图1-7所示。涉及VS的安装也不麻烦。
图1-7 外部工具
笔者初学Vega Prime的时候,用了一个月才把软件安装成功,当时还专门写了一个帖子分享教程。以前确实有很多国外软件的安装让人头疼,不过现在好多了,尤其是Visual Studio的安装。一方面,Visual Studio Community版本是完全绿色免费的,不需要破解;另一方面,Visual Studio的安装过程纯粹是一个自动化线性过程,只需要根据提示单击“确认”按钮即可,本书不再赘述。
工程设置参数中有很多选项,现阶段只需要掌握两个就够用了。
TimeManager: 时间管理器。Fixed Timestep设置为0.02秒,表示游戏的逻辑每隔0.02秒执行1次,该参数反映了逻辑执行速度的快慢,如图1-8所示。通常,该参数的默认值是0.033秒,表示游戏的逻辑每隔0.033秒执行1次。
图1-8 TimeManager
Script Execution Order: 脚本启动顺序,如图1-9所示。每一款游戏都有一个启动脚本,它负责启动游戏,是游戏的入口。
图1-9 Script Execution Order
很多时候,随着游戏功能的增多,开发者很容易在不同的脚本中设置入口点,使Unity不知道应该先启动哪一个脚本。发生这种情况时,开发者通常需要在Script Execution Order列表中给脚本排一个启动顺序,分清主次先后。
对于一款软件的界面布局设计,往往需要考虑3个方面:第1个是界面布局要方便用户操作使用;第2个是面板分区要符合资源分类标准;第3个是符合大众审美。
Unity默认的界面布局如图1-10所示,实用而美观。为了让大家有清晰的印象,这里把Unity的界面分为4个面板,分别是结构面板、场景面板、工程面板、监视器面板。每个面板负责不同的功能。
图1-10 Unity默认的界面布局
在Unity默认的界面布局的基础上,开发者通常会根据自己的开发习惯来调整布局。接下来,我们一起来实践Unity界面布局的调整过程。
值得一提的是,下面即将实现的几乎是所有使用Unity的程序员都在使用的一种界面布局,其在Unity使用群体中的使用率高达95%,大家可以果断地使用这个布局,并养成固定布局的好习惯。
在Unity的界面中,用户可以自由地拖曳每一个面板,熟悉面板后,请大家按照图1-11所示的布局来调整Unity的界面。
待调整完成后,单击界面右上角的Default按钮,如图1-12所示,弹出下拉列表,其中有5个预设布局和3个选项。对于这5个预设布局,大家可以自由切换体验。
读者需要掌握下拉列表中的3个选项。
Save Layout: 布局保存选项。在调整完布局之后,选择此选项可以把界面布局保存下来。图1-13所示是选择此选项后弹出的保存对话框,可以为保存的界面布局命名。
保存界面布局的好处是,就算不小心把调好的界面布局调乱,也可以通过选择布局列表中已保存的work布局进行恢复。
Delete Layout和Revert Factory Settings: 这两个选项分别用于删除布局和恢复初始设置,其功能简单,此处不再赘述。
图1-11 work布局
图1-12 预设布局
图1-13 保存布局
图1-14 设置分辨率
选中Game面板,单击Free Aspect,从弹出的下拉列表中选择分辨率1920×1080,如图1-14所示,作为游戏的标准分辨率。