Unity 中 AR Foundation + ARCore 配置教程
为什么选 Unity
Unity 是目前 ARCore 开发中最流行的引擎,原因:
- AR Foundation 是 Unity 官方推出的跨平台 AR 框架,底层同时驱动 ARCore(Android)和 ARKit(iOS)
- 一次编写,Android 和 iOS 都能跑
- 内置的 Render Pipeline(URP / HDRP)对 AR 场景优化较好
- Scene Understanding 和 Meshing 等高级能力在 Unity 层有更方便的封装
步骤一:Unity 版本选择
最低要求 Unity 2019.4.3f1 LTS,推荐用最新的 LTS 版本(当前 2022.3 或 2023.x LTS)。AR Foundation 在每个 Unity 版本上都有对应的包版本,版本不匹配会导致编译错误或运行时崩溃。
建议在 Unity Hub 中选择 LTS 版本创建项目,模板选 URP Project(AR 场景需要 Universal Render Pipeline 支持遮挡渲染)。
步骤二:Package Manager 安装依赖
打开 Window → Package Manager,依次安装以下包:
| 包名 | 用途 |
|---|---|
AR Foundation (com.unity.xr.arfoundation) | 跨平台 AR 框架主包 |
ARCore XR Plugin (com.unity.xr.arcore) | Android 端 ARCore 插件 |
ARKit XR Plugin (com.unity.xr.arkit) | iOS 端 ARKit 插件(跨平台需要) |
OpenXR Plugin (com.unity.xr.openxr) | XR 底层运行时(AR Foundation 依赖) |
XR Management (com.unity.xr.management) | XR 插件管理器 |
| AR Foundation Extensions(可选) | Cloud Anchors、Geospatial 等扩展 API |
安装顺序:先装 AR Foundation,它会自动拉起 OpenXR 和 XR Management 依赖。然后分别安装 ARCore 和 ARKit 插件。
步骤三:Build Settings 配置
打开 File → Build Settings:
Android 目标:
- 点击 Android → Switch Platform
- 点击 Player Settings:
- Other Settings → Rendering → Graphics APIs:如果列出了 Vulkan,先移走(ARCore 目前不支持 Vulkan);保留 OpenGLES3
- Other Settings → Package Name:设置正确的应用包名(如
com.yourcompany.arproject) - Other Settings → Minimum API Level:Android 8.0 (Oreo) 或更高(ARFoundation 的普遍要求)
- XR Plug-in Management → Android:勾选 ARCore
- 在项目的
Assets/Plugins/Android/AndroidManifest.xml中确保有<uses-permission android:name="android.permission.CAMERA" />和<uses-feature android:name="com.google.ar.core" android:value="optional" />
iOS 目标:
- 点击 iOS → Switch Platform
- Player Settings 中设置 Bundle Identifier
- 确保选择了正确的 Target Minimum iOS Version(通常 12.0+)
- XR Plug-in Management → iOS:勾选 ARKit
步骤四:Scene 搭建
新建一个场景,搭建 AR Foundation 的基础结构:
Scene
├── AR Session Origin(必需)
│ └── AR Camera
├── AR Plane Manager(可选,需要平面检测时加)
├── AR Point Cloud Manager(可选,需要特征点云时加)
└── AR Anchor Manager(可选,需要管理锚点时加)
- AR Session Origin:AR Foundation 的核心对象,自动处理 Session 生命周期和相机姿态同步
- AR Camera:挂在 Session Origin 下的摄像头,渲染 AR 画面
- AR Plane Manager:启用平面检测,自动在检测到的平面上创建 Plane GameObject
- AR Anchor Manager:管理所有 Anchor,自动跟踪每个锚点的稳定性
步骤五:放置虚拟物体(Hit Test)
用代码实现点击屏幕放置物体的最简流程:
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
public class PlaceObjectOnPlane : MonoBehaviour
{
public ARRaycastManager raycastManager;
public GameObject prefabToPlace;
private List<ARRaycastHit> hits = new();
void Update()
{
if (Input.touchCount == 0) return;
var touch = Input.GetTouch(0);
if (touch.phase != TouchPhase.Began) return;
if (raycastManager.Raycast(touch.position, hits, TrackableType.PlaneWithinPolygon))
{
var hit = hits[0];
var placed = Instantiate(prefabToPlace, hit.pose.position, hit.pose.rotation);
}
}
}
把这个脚本挂到 AR Session Origin 上,或者任意带有 RaycastManager 的对象上。
常见坑点
Graphics API 包含 Vulkan:ARCore 当前不支持 Vulkan 渲染后端,必须手动移走。否则 Android 设备会黑屏或直接崩溃。
Build Settings 平台没切换:Package Manager 里同时装了 ARCore 和 ARKit 不代表它们都能生效——Build Settings 里当前选中的平台决定了哪个插件参与构建。
Minimum API Level 过低:AR Foundation 4.0+ 要求 Android 8.0(API 26)以上,如果设置为更低的版本会导致插件被裁剪。
包名里有特殊字符:Android 的包名要求严格(只能用小写字母、数字和点),Unity 有时候自动生成的包名包含大写字母,记得检查。