
2.4 Unity开发的常用工具
Unity作为一款优秀的游戏引擎,已经具备了资源整合与管理的绝大部分功能,但是 VR内容的制作开发是一套综合的工作流程,所以在整个工作环节中,还需要借助一些工具来使开发工作更加高效,团队配合更加稳定。本节将介绍在使用 Unity开发 VR 内容的工作流程中常用的工具。
2.4.1 Visual Studio
Visual Studio是微软旗下的软件开发工具包。目前包括3种版本: 社区版(Community)、专业版(Professional )和企业版(Enterprise),其中社区版供学生、开源组织和个人开发人员免费使用,如图2-21所示。

图2-21 Visual Studio官方下载主页
随着 Unity中.NET 4.6 脚本运行库的升级,Unity开始支持 C#6.0 及其更高版本的众多新功能,而之前随Unity一同发行的MonoDevelop 并不支持 C#6.0 的新功能,所以在未来版本的Unity(2018.1起)中将停止对MonoDevelop的支持,故Visual Studio是我们推荐的Unity脚本IDE(集成开发环境)。
Mac 用户可下载Visual Studio for Mac,Windows 用户可下载Visual Studio 2017 Community,进行VR内容的开发。
在 Unity中,用户可通过菜单栏 Editor > Preferences> External Tools > External Script Editor 选择指定 Visual Studio 2017(Community)为默认脚本编辑器,如图2-22所示。初次安装,可点击Browse...定位到Visual Studio安装目录,选IDE执行文件即可。

图2-22 指定Unity外部代码编辑器为Visual Studio
在Project面板中,双击脚本即可打开Visual Studio 进行脚本的编写。
使用 Visual Studio 调试程序
Visual Studio 2017 预制了 Unity代码调试工具,可以非常方便地设定断点,无缝地与Unity结合进行代码调试,以快速定位问题,如图2-23所示。

图2-23 在Visual Studio中启动调试
用户在代码中设置断点,点击附加到 Unity按钮,然后在Unity中启动项目,当运行到断点处的逻辑时,Visual Studio 会将程序挂起,继而在代码编辑器中切换到调试状态。用户通过观察编辑器展示的该处所有对象的状态信息,即可快速定位问题,如图2-24所示。

图2-24 Visual Studio 断点调试
同时,Visual Studio 2017 提供对 Unity的智能语法高亮、自动完成功能,对于选定的方法、属性、事件等均有相应的注释说明,方便开发者快速进行代码的编写,如图2-25所示。

图2-25 Visual Studio智能语法高亮
另外,在VS编辑器中,可以通过帮助(Help)> UnityAPI 引用,或快捷键Ctrl+Alt+M,Ctrl+H,快速查看脚本在Unity文档中的说明,如图2-26所示。

图2-26 快速查看Unity API引用
2.4.2 Visual Studio Code
VIsual Studio Code(以下简称 VS Code)是一款跨平台轻量级的代码编辑器,该工具开源免费,可运行用于Windows、MacOS 和 Linux平台,如图2-27所示。

图2-27 Visual Studio Code
要使用 VS Code 作为 Unity默认代码编辑器,可参见上节关于将 Visual Studio 设置为默认代码编辑器的方法,在External Script Editor 列表中选择 Visual Studio Code 即可,如图2-28所示。

图2-28 将VS Code作为Unity默认代码编辑器
VS Code 支持多种编程语言,要使用 VS Code 进行 Unity项目开发并使其支持 C# 语法高亮和代码提示,需要安装 C# 扩展,点击 VS Code 左侧边栏中的扩展按钮,打开扩展视图,在搜索框中输入 C#,在搜索结果中选择如图2-29 所示的扩展安装即可。

图2-29 使VS Code支持C#语法高亮和代码提示
使用 VS Code 调试程序
在 VS Code 中进行应用程序调试,需要安装 Debugger for Unity扩展,在扩展视图中搜索 Debugger for Unity即可找到该扩展并进行安装,如图2-30 所示。
点击左侧边栏中的 Debug 按钮,切换至调试视图,此视图中将显示调试过程中的相关信息。若初次使用 VS Code 进行调试,点击视图右上角的齿轮按钮,在下拉列表中选择 UnityDebugger 后,点击绿色箭头即可启动调试,如图2-31所示。

图2-30 在VS Code中安装调试插件Debugger for Unity

图2-31 在VS Code中进行代码调试
返回 Unity,启动应用程序,当程序运行到断点处时返回 VS Code进行调试查看,在调试视图的变量栏中,可以查看断点处的变量状态,如图2-32所示。
通过编辑器顶部的调试控件控制调试进程,如图2-33所示。

图2-32 VS Code中的调试信息

图2-33 VS Code调试控件
2.4.3 Git
Git 是一款开源免费的分布式版本控制工具,可访问其官网下载和安装,如图2-34所示。不同于其他集中式版本控制工具(如SVN、CVS等),Git 采用分布式管理方式,不需要部署服务器端软件就可以对项目进行版本控制,每个开发者都可以拥有全部开发历史的本地副本。同时,对于每一次提交,Git 只关心文件的整体性是否改变,而不是文件内容的不同,然后将其作为一次快照存储在仓库中。

图2-34 Git官方下载页面
对于 Unity项目,并不需要将所有文件都纳入Git 版本管理,例如 Unity项目中 Library文件夹下的所有文件。在 Git 中,可制定忽略规则,将不需要进行版本管理的文件过滤。忽略规则存放在一个名为.gitignore的文件中,其中列出了需要被忽略的文件类型匹配信息,在使用时,只需将该文件放置在项目的根目录下即可。本书提供了针对 Unity项目的忽略规则,可在随书资源本章目录下获取。
Sourcetree 是一款带有图形界面的 Git 工具,可以非常直观地执行 Git 相关命令,查看版本管理进程,如图2-35所示。可在其官网进行下载。
分布式版本控制意味着开发者不只在本地拥有仓库,同时可以将仓库上传至服务器以进行团队协作开发。GitHub是提供 Git 仓库托管的社会化编程社区,也是世界上最大的代码存放网站和开源社区,目前已被微软收购。
同时,GitHub 还为 Unity开发者提供了一个免费的插件——GitHub for Unity,如图2-36所示。该工具是一款帮助开发者在 Unity编辑器中进行Git基本操作,进行版本控制的免费插件,能够使开发者和设计师在 Unity中进行高效的团队协作。

图2-35 Sourcetree用户界面(Windows版)

图2-36 GitHub for Unity
延伸阅读
(1)Scott Chacon.Pro Git.Apress, 2009.
(2)大塚弘记.Github入门与实践.人民邮电出版社, 2015.
2.4.4 Unity Collaborate
Unity Collaborate是Unity提供的一项基于云服务的项目托管服务,作为 UnityTeam 服务的一部分,适合小团队保存、共享及同步Unity项目,无论用户在什么地方以及在项目中是什么角色,都可以方便地为项目的工作进度贡献力量。相较于Git,Collaborate服务界面操作集成于Unity编辑器中,并由Unity提供云服务,如图2-37所示。
在新建或现有项目中,用户可以单击图2-37中“1”处的Collab按钮,开启Unity Collaborate服务。对于新建的项目,开启Collaborate服务时,会将项目自动上传到云端,对于已经存在的项目,开启Collaborate服务时,需要手动上传项目,如图2-38所示。

图2-37 启动Unity Collaborate服务

图2-38 Collaborate控制面板
通过菜单栏 Window > Services 开启Unity服务面板,点击Collaborate,亦可开启服务,同时打开Collaborate控制面板。用户可以点击Open the Collaborate toolbar,打开Collaborate工具栏,如图2-39所示。

图2-39 Collaborate工具栏
在工具栏上,用户可以点击图2-39中“1”处的按钮,邀请小组成员加入项目。此时在浏览器中打开Unity Dashboard,在图2-40中“1”处的文本框中,用户可以输入任意注册了Unity ID的用户名,将其加入项目中。

图2-40 Collaborate Dashboard
Collaborate会根据项目资源的变动,在Project面板中的资源右上角显示相应的标识,如添加、修改、删除等,如图2-41所示。
在项目达到一定进度时,用户可以点击Collab按钮提交项目进度。在文本框中输入必要的发布信息,以方便团队其他成员进行更新,点击Publish now! 按钮即可将项目改动提交到云端,如图2-42所示。

图2-41 纳入Collaborate服务的资源

图2-42 Collaborate将项目进度提交到云端
用户可以在Services面板的Collaborate选项中点击Open the history panel,在Collab History进度提交历史面板中查看项目变动的历史记录,如图2-43所示。在历史记录中,用户可以选择某个提交节点,点击Restore按钮,恢复到彼时的工作状态,此时用户所属项目的本地文件将被历史版本中的文件替换。用户可在恢复后的版本中进行资源的修改,并再次提交给项目组成员。
我们建议,无论是个人独立开发VR内容,还是团队配合开发,都可以使用Unity Collaborate将项目纳入版本管理。

图2-43 Collaborate进度提交历史面板