ARFoundation之路-环境配置(iOS)之二

(一)AppController

  在Project窗口Scripts文件夹下,空白处点击鼠标右键,在弹出的级联菜单中依次选择Create -->C# Script,新建一个脚本文件,并命名为AppController,如下图所示。
在这里插入图片描述
  鼠标双击AppController脚本,在Visual Studio中编辑该脚本,添加如下代码。

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;

[RequireComponent(typeof(ARRaycastManager))]
public class AppControler : 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>();
    }

    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;
            }
        }
    }
}

  在上段代码中,首先我们使用[RequireComponent(typeof(ARRaycastManager))]属性确保添加该脚本的对象上必须要有ARRaycastManager组件,因为射线检测需要用到ARRaycastManager组件。在Update()方法中,我们对手势进行射线检测,在检测到的平面上放置一个虚拟物体,如果该虚拟物体已存在,则将该虚拟物体的移动到射线检测与平面的碰撞点。

  经过以上步骤,整体AR应用框架已完全搭建起来了,最后,我们在Hierarchy窗口中制作一个Sphere,为其赋上绿色材质,将其Scale缩放成(0.1,0.1,0.1),最后将其制作成Prefab并删除Hierarchy场景中的Sphere,如下图所示。
在这里插入图片描述
  最后,在Hierarchy窗口中选中AR Session Origin,为其添加前面编写的AppController脚本(可以使用Add Component在搜索框中搜索AppController添加,也可以直接把AppController脚本拖到AR Session Origin对象上),并将上一步制作的Sphere拖到AppController脚本的Spawn Prefab属性框中。

在这里插入图片描述
  至此,Helloworld AR应用已完成环境搭建和功能开发。

(二)生成并配置XCode工程

  将iPhone手机通过USB线或者WiFi连接上电脑,直接按Command+Shift+B组合键(或者选择File-> Build Settings)打开Build Settings对话框,如下图所示。在打开的对话框中保证选中当前场景,点击Build And Run将生成XCode工程,建议将工程保存到另一个工程文件夹下,设置发布后的程序名,最后点击“保存”按钮开始编译生成XCode工程,生成完成后会自动打开XCode IDE(如果没有自动打开XCode,可以先启动XCode选择右下角的Open another Project,选择我们用Unity发布出来的Xcode工程并打开)。
在这里插入图片描述

在这里插入图片描述

  如若编译没有错误,在XCode打开生成的工程后,依次选择XCode工程图标 -->工程名,然后选择发布的设备iPhone手机,因为我们是在要真机上测试应用,如下图所示。
在这里插入图片描述  在工程属性面板中,选择General选项卡,填写好Display Name(工程名)、Bundle Identifier(包ID)、Version、Build,Bundle Identifier也即是我们在Unity中设置好的Bundle Identifier,如果要发布到AppStore上,Bundle Identifier必须与开发者网站上的设置一样,Version、Build也要符合按递增的要求,并选择开发者证书,如下图所示。
在这里插入图片描述
  如果还没有开发者账号,可点击Team 框后的下拦菜单,选择Add an Account 新建一个开发者账号,具体操作请参见官方说明文档,如下图所示。

在这里插入图片描述
在这里插入图片描述

(三)运行Helloworld

  在XCode配置完后,点击XCode IDE左上角的编译运行图标开始编译、部署、运行。

在这里插入图片描述
  如果是iPhone手机是第一次运行XCode应用,还需要设置一下,第一步,打开手机设置–>通用,找到“设备管理”,如下图所示。
在这里插入图片描述
  进入设备管理后,点击开发者账号,如下图所示。
在这里插入图片描述
  在开发者应用管理界面点击“验证应用”,iPhone手机会对该开发者进行网络认证,认证通过后,应用后会出现“已验证”字样,至此就可以通过XCode直接部署应用到手机并运行应用了。
在这里插入图片描述
  若整个过程没有出现问题(有问题是必然的,出现问题后请查阅相应资料解决之),在Helloworld AR应用打开后,找一个相对平坦且纹理比较丰富的平面左右移动手机进行平面检测,在检测到平面后,手指点击手机屏幕上已检测到的平面,将会在该平面上加载一个小球,如下图所示。至此,我们使用ARFoundation开发的iOS Helloworld AR应用已成功。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yolon3000/article/details/93655054