一、问题背景

博主最近在研究ARCore,即自定义创建一款Android端的AR应用。于是便学习ARCore官方网站的开发教程,先导入并运行arcore-unity-sdk-1.16.0.unitypackage,但是在Unity 2019导入arcore-unity-sdk-1.16.0.unitypackage后总是提示编译错误,于是博主开始寻找解决方案。

二、错误原因分析

博主在参考ARCore官方网站的开发教程时,浏览器根据博主我所在的国家默认选择了ARCore的中文开发教程,这似乎不是什么大问题。但是,如果我们仔细对比ARCore的英文和中文开发教程,我们会发现中文开发教程存在着严重的滞后性!

Unity导入了DLL后命名域报错 unity导入package报错_开发教程


由上述的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:

  1. 选择 Assets > Import Package > Custom Package
  2. 选择你下载的arcore-unity-sdk-1.16.0.unitypackage
  3. Importing Package导入包对话框中,确保选中所有包选项并单击Import

2.打开示例场景

在Unity的Project项目窗口,你可以在这找到HelloAR的Demo样例:Assets/GoogleARCore/Examples/HelloAR/Scenes/

3.配置项目设置

  1. 前往File > Build Settings打开Build Settings窗口。
  2. 选择Android并点击Switch Platform
  3. Build Settings窗口中点击Player Settings
  4. Settings窗口, 按照如下要求进行配置:

Setting

Value

Player Settings > Other Settings > Rendering

取消勾选Auto Graphics API,如果Graphics APIs中勾选了Vulkan,请取消勾选。

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.构建并运行示例应用程序

  1. 在设备上启用开发人员选项和USB调试。
  2. 将设备连接到电脑。
  3. 在Unity的Build Settings窗口中,点击Build并运行。Unity将您的项目构建到Android APK中,安装到您的设备上,并启动它。
  4. 移动你的设备,直到ARCore开始检测和可视化平面。
  5. 点击一个平面,将一个Andy Android对象放在上面。
  6. (可选)使用Android logcat查看日志消息或Android设备监视器更全面地分析设备。