文章目录
- 前言
- 一、导入插件
- 二、设置开发环境
- 三、搭建基础框架
- 四、代码
- 五、导出
- 六、测试
- 总结
前言
最近接了公司的一个AR项目,需要用MacBook,所以赶鸭子上架,现学…小本本记下来
我用的unity是2020.3.15f2c1,
MacBook是 2020MacBook M1,
ipad是iPad mini(第五代)
建以unity2019.1以上,XCode10以上版本
一、导入插件
-
新建一个3D项目类型
-
点击unity菜单栏Windows->Package Manager
-
弹出的菜单栏默认不显示我们所需要的AR插件,所以点击Packages下拉菜单选择unity registry
-
如图,安装这三个插件
二、设置开发环境
-
点击菜单栏fike->Build Settings…
-
点击IOS,再点击Switch Platfrom,切换到IOS平台
-
然后点击左下角的player settings,点击左边的Player,设置公司名和产品名!
-
展开Other Settings选项卡在Identification栏,Bundle Identifier中与上面的公司名和产品名一致,还有版本号
-
再往下,Camera Usage Description中填写I Need Camera,
设置Target Device,可以是iPhone或者iPad,
因为使用真机调试所以Target SDK选择Device SDK,
设置Target minimum IOS Version最低IOS版本为11.0
设置处理器架构Architecture为ARM64
三、搭建基础框架
-
删除主摄像机(因为AR Session Origin自带有AR摄像机)
-
在Hierarchy空白处右击,然后选择XR->AR Session和AR Session Origin
-
然后再Hierarchy空白处右击,选择XR->AR Default Plane,把它拖到Prefab文件夹做成预制体,然后删除Hierarchy下的AR Default Plane对象
-
点击选择Hierarchy窗口下的AR Session Origin,在Inspector窗口点击Add Component按钮,输入arp,添加搜索出来的ARPlane Manager组件
-
将刚才的AR Default Plane预制体拖入到ARPlane Manager组件下的Plane Prefab属性框
四、代码
- 创建脚本并写入代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
[RequireComponent(typeof(ARRaycastManager))]
public class AppController : MonoBehaviour{public GameObject spawnPrefab;static List<ARRaycastHit> Hits;private ARRaycastManager mRaycastManager;private GameObject spawnedObject = null;private void Start(){Hits = new List<ARRaycastHit>();mRaycastManager = GetComponent<ARRaycastManager>();}private void Update(){if (Input.touchCount == 0)return;var touch = Input.GetTouch(0);if (mRaycastManager.Raycast(touch.position, Hits, TrackableType.PlaneWithinPolygon | TrackableType.PlaneWithinBounds)){var hitPose = Hits[0].pose;if (spawnedObject == null){spawnedObject = Instantiate(spawnPrefab, hitPose.position, hitPose.rotation);}else{spawnedObject.transform.position = hitPose.position;}}}
}
- 在Hierarchy窗口创建一个Sphere并附上材质,将Scale缩放成(0.1,0.1,0.1);制成预制体,并删除Hierarchy窗口下的Sphere
- 然后选择Hierarchy窗口下的AR Session Origin,添加刚才写的脚本,并把Sphere预制体添加到脚本的Spawn Prefab属性框中
五、导出
-
将iPhone或者iPad通过USB或者WIFI连接计算机,
-
点击File选择Build Settings对话框,把当前场景添加进来
-
然后点击Build And Run,将会生成XCode工程,建以保存在另一个文件夹
-
打包后XCode打开生成工程后,依次点击XCode工程图标->工程名,选择真机设备,这里选择的是iPad
-
在工程属性面板中选择General选项卡,检查Display Name和Bundle Identifier还有Version是否在unity设置一样
-
然后点击Signing&Capabilities选项卡,选择开发者证书
-
配置完成后点击左上角的编译运行图标开始编译、发布、部署、运行.
六、测试
-
编译运行后,真机上可能出现不允许使用,那就打开设置->通用->设备管理->开发者App->验证应用,点击信任
-
然后点击打开app,
总结
刚开始导出测试的时候,打开app后屏幕是黑的,没有弹出访问摄像机的提示,害的我一顿找啊,找了好久没找到什么问题,真™dfs#$%&DBAR#T^T#%@R437482&jsfbskdnfose
最后原来是player settings->XR Plug-in Management中的ARKIT没有打上勾