AR 配置并导出IOS开发环境配置

文章目录

  • 前言
  • 一、导入插件
  • 二、设置开发环境
  • 三、搭建基础框架
  • 四、代码
  • 五、导出
  • 六、测试
  • 总结


前言

最近接了公司的一个AR项目,需要用MacBook,所以赶鸭子上架,现学…小本本记下来
我用的unity是2020.3.15f2c1,
MacBook是 2020MacBook M1,
ipad是iPad mini(第五代)
建以unity2019.1以上,XCode10以上版本


一、导入插件

  1. 新建一个3D项目类型

  2. 点击unity菜单栏Windows->Package Manager
    AR 配置并导出IOS开发环境配置_第1张图片

  3. 弹出的菜单栏默认不显示我们所需要的AR插件,所以点击Packages下拉菜单选择unity registry
    AR 配置并导出IOS开发环境配置_第2张图片

  4. 如图,安装这三个插件
    AR 配置并导出IOS开发环境配置_第3张图片

二、设置开发环境

  1. 点击菜单栏fike->Build Settings…
    AR 配置并导出IOS开发环境配置_第4张图片

  2. 点击IOS,再点击Switch Platfrom,切换到IOS平台

  3. 然后点击左下角的player settings,点击左边的Player,设置公司名和产品名!

  4. 展开Other Settings选项卡在Identification栏,Bundle Identifier中与上面的公司名和产品名一致,还有版本号

  5. 再往下,Camera Usage Description中填写I Need Camera,
    设置Target Device,可以是iPhone或者iPad,
    因为使用真机调试所以Target SDK选择Device SDK,
    设置Target minimum IOS Version最低IOS版本为11.0
    设置处理器架构Architecture为ARM64
    AR 配置并导出IOS开发环境配置_第5张图片

三、搭建基础框架

  1. 删除主摄像机(因为AR Session Origin自带有AR摄像机)

  2. 在Hierarchy空白处右击,然后选择XR->AR Session和AR Session Origin
    AR 配置并导出IOS开发环境配置_第6张图片

  3. 然后再Hierarchy空白处右击,选择XR->AR Default Plane,把它拖到Prefab文件夹做成预制体,然后删除Hierarchy下的AR Default Plane对象
    AR 配置并导出IOS开发环境配置_第7张图片
    AR 配置并导出IOS开发环境配置_第8张图片

  4. 点击选择Hierarchy窗口下的AR Session Origin,在Inspector窗口点击Add Component按钮,输入arp,添加搜索出来的ARPlane Manager组件

  5. 将刚才的AR Default Plane预制体拖入到ARPlane Manager组件下的Plane Prefab属性框
    在这里插入图片描述

四、代码

  1. 创建脚本并写入代码
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;
            }
        }
    }
}
  1. 在Hierarchy窗口创建一个Sphere并附上材质,将Scale缩放成(0.1,0.1,0.1);制成预制体,并删除Hierarchy窗口下的Sphere
  2. 然后选择Hierarchy窗口下的AR Session Origin,添加刚才写的脚本,并把Sphere预制体添加到脚本的Spawn Prefab属性框中

五、导出

  1. 将iPhone或者iPad通过USB或者WIFI连接计算机,

  2. 点击File选择Build Settings对话框,把当前场景添加进来

  3. 然后点击Build And Run,将会生成XCode工程,建以保存在另一个文件夹

  4. 打包后XCode打开生成工程后,依次点击XCode工程图标->工程名,选择真机设备,这里选择的是iPad
    AR 配置并导出IOS开发环境配置_第9张图片

  5. 在工程属性面板中选择General选项卡,检查Display Name和Bundle Identifier还有Version是否在unity设置一样
    AR 配置并导出IOS开发环境配置_第10张图片

  6. 然后点击Signing&Capabilities选项卡,选择开发者证书
    AR 配置并导出IOS开发环境配置_第11张图片

  7. 配置完成后点击左上角的编译运行图标开始编译、发布、部署、运行.
    AR 配置并导出IOS开发环境配置_第12张图片

六、测试

  1. 编译运行后,真机上可能出现不允许使用,那就打开设置->通用->设备管理->开发者App->验证应用,点击信任
    AR 配置并导出IOS开发环境配置_第13张图片



  2. 然后点击打开app,
    AR 配置并导出IOS开发环境配置_第14张图片
    AR 配置并导出IOS开发环境配置_第15张图片

总结

刚开始导出测试的时候,打开app后屏幕是黑的,没有弹出访问摄像机的提示,害的我一顿找啊,找了好久没找到什么问题,真™dfs#$%&DBAR#T^T#%@R437482&jsfbskdnfose
最后原来是player settings->XR Plug-in Management中的ARKIT没有打上勾

你可能感兴趣的:(AR,ar,ios,unity)