一、问题背景
博主最近在研究ARCore,即自定义创建一款Android端的AR应用。于是便学习ARCore官方网站的开发教程,先导入并运行arcore-unity-sdk-1.16.0.unitypackage
,但是在Unity 2019导入arcore-unity-sdk-1.16.0.unitypackage
后总是提示编译错误,于是博主开始寻找解决方案。
二、错误原因分析
博主在参考ARCore官方网站的开发教程时,浏览器根据博主我所在的国家默认选择了ARCore的中文开发教程,这似乎不是什么大问题。但是,如果我们仔细对比ARCore的英文和中文开发教程,我们会发现中文开发教程存在着严重的滞后性!
由上述的ARCore中英文开发教程的对比图,我们可以得知:中文教程已经很久没有更新了,而只有英文教程提到了以下针对在Unity 2019导入ARCore Unity Sdk时需要的额外安装包:
Unity 2019 only: Select Window > Package Manager and install the following packages:
Multiplayer HLAPI (required by the CloudAnchors sample)
XR Legacy Input Helpers (required by Instant Preview, which uses the TrackedPoseDriver)
因此,如果我们仿照着许久未更新的中文教程在Unity 2019导入ARCore Unity Sdk,而没有安装Unity 2019特定的安装包,这样肯定会引发项目编译错误。
三、解决方案
我们需要按照ARCore最新的英文版开发教程来完成我们ARCore Unity Sdk的导入操作,以下是最新的英文版教程。
1.创建一个新项目并导入SDK
打开Unity并创建一个新的3D项目。
仅适用于Unity 2019:选择Window >Package Manager
并安装以下包:
-
Multiplayer HLAPI
(CloudAnchors sample需要该安装包) -
XR Legacy Input Helpers
(使用TrackedPoseDriver的Instant Preview需要该安装包)
导入ARCore Unity Sdk:
- 选择
Assets > Import Package > Custom Package
。 - 选择你下载的arcore-unity-sdk-1.16.0.unitypackage。
- 在
Importing Package
导入包对话框中,确保选中所有包选项并单击Import
。
2.打开示例场景
在Unity的Project
项目窗口,你可以在这找到HelloAR
的Demo样例:Assets/GoogleARCore/Examples/HelloAR/Scenes/
。
3.配置项目设置
- 前往
File > Build Settings
打开Build Settings
窗口。 - 选择
Android
并点击Switch Platform
。 - 在
Build Settings
窗口中点击Player Settings
。 - 在
Settings
窗口, 按照如下要求进行配置:
Setting | Value |
Player Settings > Other Settings > Rendering | 取消勾选 |
Player Settings > Other Settings > Package Name | 使用Java包名格式创建唯一的应用程序ID,例如com.example.helloAR。 |
Player Settings > Other Settings > Minimum API Level | Android 7.0 “牛轧糖”(API级别24)或更高(AR可选应用程序的最低API级别为14)。 |
Player Settings > XR Settings > ARCore Supported | 把ARCore Supported设置为Enable。 |
4.构建并运行示例应用程序
- 在设备上启用开发人员选项和USB调试。
- 将设备连接到电脑。
- 在Unity的
Build Settings
窗口中,点击Build
并运行。Unity将您的项目构建到Android APK中,安装到您的设备上,并启动它。 - 移动你的设备,直到ARCore开始检测和可视化平面。
- 点击一个平面,将一个Andy Android对象放在上面。
- (可选)使用Android logcat查看日志消息或Android设备监视器更全面地分析设备。