ARCore 中文文档 下载 App

Unity 中 AR Foundation + ARCore 配置教程

为什么选 Unity

Unity 是目前 ARCore 开发中最流行的引擎,原因:

步骤一: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 目标:

  1. 点击 Android → Switch Platform
  2. 点击 Player Settings:
  1. XR Plug-in Management → Android:勾选 ARCore
  2. 在项目的 Assets/Plugins/Android/AndroidManifest.xml 中确保有 <uses-permission android:name="android.permission.CAMERA" /> 和 <uses-feature android:name="com.google.ar.core" android:value="optional" />

iOS 目标:

  1. 点击 iOS → Switch Platform
  2. Player Settings 中设置 Bundle Identifier
  3. 确保选择了正确的 Target Minimum iOS Version(通常 12.0+)
  4. 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(可选,需要管理锚点时加)

步骤五:放置虚拟物体(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 有时候自动生成的包名包含大写字母,记得检查。