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


前言

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


一、导入插件

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

  2. 点击unity菜单栏Windows->Package Manager
    在这里插入图片描述

  3. 弹出的菜单栏默认不显示我们所需要的AR插件,所以点击Packages下拉菜单选择unity registry
    在这里插入图片描述

  4. 如图,安装这三个插件
    在这里插入图片描述

二、设置开发环境

  1. 点击菜单栏fike->Build Settings…
    在这里插入图片描述

  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
    在这里插入图片描述

三、搭建基础框架

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

  2. 在Hierarchy空白处右击,然后选择XR->AR Session和AR Session Origin
    在这里插入图片描述

  3. 然后再Hierarchy空白处右击,选择XR->AR Default Plane,把它拖到Prefab文件夹做成预制体,然后删除Hierarchy下的AR Default Plane对象
    在这里插入图片描述
    在这里插入图片描述

  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
    在这里插入图片描述

  5. 在工程属性面板中选择General选项卡,检查Display Name和Bundle Identifier还有Version是否在unity设置一样
    在这里插入图片描述

  6. 然后点击Signing&Capabilities选项卡,选择开发者证书
    在这里插入图片描述

  7. 配置完成后点击左上角的编译运行图标开始编译、发布、部署、运行.
    在这里插入图片描述

六、测试

  1. 编译运行后,真机上可能出现不允许使用,那就打开设置->通用->设备管理->开发者App->验证应用,点击信任
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 然后点击打开app,
    在这里插入图片描述
    在这里插入图片描述

总结

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

猜你喜欢

转载自blog.csdn.net/weixin_44954896/article/details/127338970
今日推荐