使用 Unity 开发 Android VR 应用系列之一——开发环境设置

0. 读者定位

  • 熟悉 Android 开发
  • 对 C#/.NET 有一定了解
  • 想学习如何通过 Unity 开发 Android 应用

Unity 是微软旗下的跨平台游戏/应用开发工具,C# 自然成为其首推支持的前端开发语言。C# 虽是从 Java 脱胎而出,经过近二十年的独立发展,已经成长为一门明显优于 Java 的现代化语言(这当然是我个人的主观见解)。我也发愿以此项目为起点,重新掌握 C#/.NET 的技术体系。

1. 开发环境一览

  • Windwos 10, 16 GB RAM, 1060 3GB+ 独显

    Unity 对硬件具有一定要求,不仅指构建版本,开发过程中还需要频繁使用开发机运行调试项目,硬件配置对开发效率的影响还是比较大的。

  • Android Studio 环境(包括 SDK 和 NDK)

    不确定 Unity 兼容所有 Android Studio 版本环境——毕竟 Android Studio 本身就存在比较显著的版本兼容性问题。所以如果你碰到项目配置相关的错误,建议尝试提高或降低 Android Studio/SDK/NDK 版本来解决。我个人的 Android Studio 环境是 Android Studio 3.5.3/SDK Platform 26/NDK r16b。

  • Unity 2018.4.14f1

    Unity 存在多个并行版本,包括 2017/2018/2019 等系列。大版本间互不兼容,所以立项之初 Unity 版本选择是一个重要任务。
    版本选择大概有几个原则:

    • 依赖方的要求,很多第三方 SDK 不保证兼容所有 Unity 版本
    • 优先使用 LTS (Long Term Support) 版本,LTS 意味着官方的持续维护,版本质量更高
    • 如果想体验所有新功能,优选 2019 版本;如果更注重产品的稳定性,优选 2018 版本。LTS 并不意味着会同步所有最新版本的大功能,所以 2018 LTS 的功能是弱于 2019 系列的
  • Visual Studio Community 2019

    此项可选。通过一些渠道安装 Unity,会同时包含 Visual Studio Community 2017 的安装选项,这已经足够了。

  • Pico G2 4K 眼镜

    我们应用的适配机型之一,我个人的最爱

2. 首次运行设置

1) Unity 关联 Android 环境

启动 Unity,依次选中菜单项 Edit - Preferences - External Tools,显示如下:

按实际安装路径分别填充标注的两个选项。没有用到 NDK 时,此项可空。

2) Android App 构建配置

在 Unity 中依次选中菜单项 Edit - Project Settings,在弹出窗口中的左栏选中 Player 选项后,在右栏切换到 Android settings 标签页。

选项繁多,不一一介绍。强烈建议对照文档熟练掌握所有选项含义,这是十分有意义的。这里仅介绍几个”高级”选项。

2.1) 自定义 Gradle 脚本

选中 Publishing Settings 下拉菜单,勾选如上图标识选项。Unity 默认使用对用户隐藏的 gradle 脚本构建 App,使用自定义 gradle 脚本,给开发者提供了从更细粒度上干预构建过程的能力。

2.2) C# 脚本配置

在 Other Settings 下拉菜单中,按上图所示设置各选项。将 .NET 运行时版本提升到 4.x 的原因是可以使用 C# 6.0 特性

3) Unity 关联 Visual Studio

Preferences 窗口中的 External Tools 标签页中,有如下选项

如果你的 Visual Studio 是通过 Unity 安装器打包安装,这里已经自动关联;如果想手动切换到其它 Visual Studio 实例,可以通过点击这里,浏览本地安装目录,找到并选中 devenv.exe 即可。
如果这里没有配置正确,在 Visual Studio 中打开脚本文件后将不能成功自动感知,且不能通过 “附加到 Unity” 功能实时调试脚本。虽然不影响脚本的正常编译,对开发效率无疑是巨大打击。

3. 后记

文中所记并非一个完整的 “Unity 下开发 Android App 配置流程”,此种教程文档网络上已数不胜数,我也是参照此类文章迈出的第一步。
此文的价值,恰恰在于它是对此类千篇一律的入门流水账的一个重要补充,是我开发过程中一些痛苦教训的精炼提取,可以让你的第一步迈得更扎实。
叙事的同时,也掺杂了很多我个人的理解。限于认知,如有冒犯或错误或词不达意等负面情绪传递,凡此种种,请留言指正,谢谢。

评论