当前位置:网站首页>[AR Foundation] 开发应用的基础框架流程
[AR Foundation] 开发应用的基础框架流程
2022-07-21 05:31:00 【Goodbye!】
AR Foundation开发应用的基础框架流程
在Scenes工程文件夹中,我们重命名场景文件为 “Helloworld”。为统一规范管理各类文件,在Project窗口Assets目
录下新建Prefabs、Scripts两个文件夹,同时在Hierarchy窗口中删除 Main Camera(因为AR Foundation AR Session Origin带有一个AR摄像机),Directional Light可根据需要决定是否删除。
在Hierarchy窗口中的空白处右击,在弹出的菜单中依次选择XR*AR Default Plane,将Hierarchy窗口中生成的AR Default Plane。拖动到Project窗口中的Prefabs文件夹下(至于什么是预制体,可以去官网看看,像是类的关系),制作一个平面预制体,如然后删除Hierarchy窗口中的AR Default Plane对象。
在Hierarchy窗口选中AR Session Origin对象,然后在Inspector 窗口中单击“Add Component”按钮,并在搜索框中输入“ARP”,然后双击搜索出来的AR Plane Manager添加该组件。
将Project窗口中Prefabs文件夹下的AR Default Plane拖动到 ARPlaneManager组件下的Plane Prefab属性框,完成平面预制体的设置。
AppController
在Project窗口Scripts文件夹下的空白处右击,在弹出的菜单中依次选择Create*C# Script,新建一个脚本文件,并命名为AppController。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
[RequireComponent(typeof(ARRaycastManager))]
//属性确保添加该脚本的对象上必须有ARRaycastManager组件
//当我们添加此行代码,向AR Session Origin添加代码组件时,会自动添加AR RaycastManager组件
public class AppController : MonoBehaviour
{
public GameObject spawnPrefab;
//此时AppController代码组件上会出来可以填充的框
static List<ARRaycastHit> Hits;
private ARRaycastManager mRaycastManager;
private GameObject spawnedObject = null;
// Start is called before the first frame update
void Start()
{
Hits = new List<ARRaycastHit>();
mRaycastManager = GetComponent<ARRaycastManager>();
}
// Update is called once per frame
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);
//克隆 original 对象并返回克隆对象
}
else
{
spawnedObject.transform.position = hitPose.position;
}
}
}
}
运行
经过以上步骤,整体AR应用框架已完全搭建起来了,为方便演示,我们在Hierarchy窗口中新建一个Cube,为其赋上红色材质,将其Scale缩放成(0.1,0.1,0.1),拖动到Prefabs文件夹中并删除Hierarchy窗口中的Cube。
最后一步,在Hierarchy窗口中选中AR Session Origin,为其挂载前面编写的AppController脚本(可以使用Add Component在搜索框中搜索AppController添加,也可以直接把AppController脚本拖到ARSession Origin对象上),并将上一步制作的Cube拖到AppController脚本的Spawn Prefab属性框中。
AR应用已开发完成,将支持ARCore的手机通过USB或者Wi-Fi连接开发计算机(具体连接方法请参见1.6节),直接按Ctrl+Shift+B快捷键(或者选择File*Build Settings)打开Build Settings对话框。在打开的对话框中保证选中当前场景,如没有出现当前场景,可单击右下方的Add Open Scenes。单击“Build And Run”,设置发布后的程序名,最后单击“Save”按钮开始编译生成apk,生成的apk应用会自动安装到连接的手机上并启动运行。
边栏推荐
- H5 realize official account login
- Oracle VM VirtualBox NAT network Ping failed
- 结构化分析SD SASP
- 【基础数据挖掘技术】KNN简单聚类
- “买不来”的数字化转型,每家的“乐高”都不同
- scrapy中使用Fromquest
- JS common methods
- 逐行写入txt文件 ,爬取进度条,尾部筛选,xml转字典
- Scala installation
- Event chain, event proxy, page rendering process, style operation, anti shake and throttling [DOM (IV)]
猜你喜欢
随机推荐
牛客刷题——剑指offer
解决Visio封闭图案不能填充问题
About a 500million data table, the battle between me and DBA
scrapy pipeline中mysql和mongo数据库入库
Structured analysis SD SASP
Solve the problem of automatic completion of Spyder code
从装配式建筑流行看云原生技术中台价值 (二)
风口浪尖上的低代码工具革命
Reading notes of redis deep adventure core principles and application practice
js获取服务端IP、端口、协议
[natural language processing and text analysis] comprehensive scanning method and item by item flipping method in basic information retrieval technology.
Dataframe counts the number of repetitions
A simple way to get headers and cookies
传统企业是否需要数据中台?
Applet sharing how to pass parameters
数字化转型:AI中台如何在企业中落地
获取header和cookie的简易方法
关于一张 5 亿数据表之我与 DBA 的 battle
Successfully install pyinstaller (solve the problem of PIP install pyinstaller installation failure)
“买不来”的数字化转型,每家的“乐高”都不同