前言

首先这个文档是基于Unity2018及以上的,由于实习需要做AR相关的内容,但是AR Core之前的教程大多是基于SDK的,而这一功能已不在Unity更高版本中支持,同时楼主又是个Unity小白,所以为了跑起ARCore在安卓上的demo用了很久,以下便是过程记录,仅供参考~

ARCore官方文档

前期准备

  • 安装unity以及对应版本的Android Build Support

推荐用unityhub直接安装

  • 安装AR Foundation插件与ARCore XR Plugin

在Unity内的Window/Package Manager的Unity Registry中搜索安装

  • 将unity的环境调整为Android

位置为File/Build Settings,选择Android并点击Switch Platform,成功后可以看到如下内容

  • 点击左下角的Player Settings,随后对其中的Other Settings进行配置:

  • 注意这里要修改默认的包名以及Android版本,24以上的才支持AR Core,其他设置也与图中保持一致即可

操作过程

0. 创建元素

  • 在Hierarchy中右键,找到XR,然后创建即可,以下模块均为创建相应部分后的操作

1. 创建一个AR Session

检查是否有AR Input Manager(如果没有就要用Add Component添加)

2. 创建一个AR Session Origin

检查AR Camera已经对应了AR Session Origin Camera

  • 使用Add Component添加一个AR Plane Manager(实现检测平面的功能)

选择DetectionMode为Everything(为检测水平和垂直的平面)

  • 使用Add Component添加AR Raycast Manager(为了与平面交互)

最终结果如下:

  • 选择AR Camera的Tag为主相机(记得删除原本的相机)

3. 创建一个AR Default Plane

  • 先在上面的Hierarchy中创建(XR/AR Default Plane),再拖至Project视图成为预设(prefab),再删除Scene部分的Plane

  • 将预设的Plane拖至AR Session Origin的AR Plane Manager的Plane Prefab

4. 创建一个spawn作为显示在平面内的物体

  • 创建一个名为SpawnableObject的Cube

  • 设置scale为0.1,0.1,0.1
  • 为cube新建一个名为Spawnable的tag,并为cube选中它

最后结果如下:

  • 与前面平面同理,将其拖入project window创建预设,并删除Hierarchy中的Cube

(预设Prefab其实有点类似复用的模块、组件…)

5. 创建一个交互的脚本

  • 创建一个C#脚本并将其命名为SpawnableManager
  • 创建一个Empty Game Object在Scene中,并取名为SpawnManager
  • 修改脚本代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;public class SpawnableManager : MonoBehaviour
{[SerializeField]ARRaycastManager m_RaycastManager;List<ARRaycastHit> m_Hits = new List<ARRaycastHit>();[SerializeField]GameObject spawnablePrefab;GameObject spawnedObject;// Start is called before the first frame updatevoid Start(){spawnedObject = null;}// Update is called once per framevoid Update(){// 检测点击,针对点击的不同阶段(phase),我们执行不同的事务if (Input.touchCount == 0)return;if (m_RaycastManager.Raycast(Input.GetTouch(0).position, m_Hits)){if (Input.GetTouch(0).phase == TouchPhase.Began){SpawnPrefab(m_Hits[0].pose.position);}else if (Input.GetTouch(0).phase == TouchPhase.Moved && spawnedObject != null){spawnedObject.transform.position = m_Hits[0].pose.position;}if (Input.GetTouch(0).phase == TouchPhase.Ended){spawnedObject = null;}}}private void SpawnPrefab(Vector3 spawnPosition){spawnedObject = Instantiate(spawnablePrefab, spawnPosition, Quaternion.identity);}
}

6. 绑定到页面对象

  • 创建一个空的Object,并将其改名为SpawnManager

  • 将刚才创建好的C#脚本拖入对象:

  • 可以看到脚本已经出现在右侧

  • 将之前创建的AR Session Origin作为该脚本的Raycast Manager拖入

这将作为页面的AR控制脚本

  • 将之前创建的SpawnableObject作为该脚本的Spanwnable Prefab拖入

这将成为代码中可以复制的对象

7. 导出与运行

  • 首先将XR-Plugin在Android的使用权打开(Edit/Project Settings)

  • 在刚刚的Build Settings中,选择Build,并选择保存位置,即可获得APk,安装在手机上就可以看到效果了:

  • 效果类似这样,但是最后出现的物体是你设置的SpawnableObject,仔细阅读代码应该就能明白了!

Unity 2021.1.15 ARCore环境配置与样例开发相关推荐

  1. Linux开发环境配置--正点原子阿尔法开发板

    Linux开发环境配置–正点原子阿尔法开发板 文章目录 Linux开发环境配置--正点原子阿尔法开发板 1.网络环境设置 1.1添加网络适配器 1.2虚拟网络编辑器设置 1.3Ubuntu和Windo ...

  2. 【Flask框架】一. Flask框架初体验(配置环境 + 简单demo样例)

    文章目录 一. Flask框架初体验(配置环境 + 简单demo样例) 虚拟环境 新建项目 将Pycharm改为FLASK_DEBUG模式 修改FLASK_DEBUG模式的步骤 配置文件 简单用法 U ...

  3. [Android] 环境配置之Android Studio开发NDK

    2019独角兽企业重金招聘Python工程师标准>>> ======================================================== 作者:qiu ...

  4. Android环境配置(Eclipse全开发环境下载)

    Android环境配置 前期准备 Android环境的Eclipse: 网站链接:https://www.runoob.com/w3cnote/android-tutorial-eclipse-adt ...

  5. C#对UG二次开发环境配置、调试和开发教程

    一.UG的宏录制 1.选择宏录制的语言C# 1.1 打开NX新建一个模型 1.2 打开文件->首选项->用户界面,设置录制语言为C# 1.3 打开开发人员,点录制即可进行录制 1.4 将录 ...

  6. win10下从源码运行Cura——环境配置(二次开发准备工作)

    win10下从源码运行Cura(二次开发准备工作) win10下从源码运行Cura 配置过程(踩坑指南) win10下从源码运行Cura 本人小白一只,近来需要了解Cura,故自己摸爬滚打学习.网上对 ...

  7. RN开发(1)__环境搭建与样例

    目录 前言 正文 环境搭建 样例实现 问题整理(补充中) 相关资源链接 小结 Tip:使用"Ctrl+F",在搜索框中输入问题 前言 先要了解几个相关的词汇Node.js,Reac ...

  8. Lumerical Python API学习笔记(一):Lumopt配置以及样例运行

    参考文章 完美解决Windows用户下lumerical(FDTD)的python库lumopt安装方法 bilibili–lumerical配合pycharm使用python联合开发的问题 0.先说 ...

  9. 【Unity + Google Cardboard】 VR环境配置

    翻译一下google cardboard接unity的开发文档 前面 一直想尝试开发一个VR游戏试试-- Unity的官方文档在这里 一开始看的时候分不清各种VR设备,如果你也是的话--比如只有一个能 ...

最新文章

  1. Silverlight 控件的验证
  2. ISA Server实验环境搭建与企业×××配置
  3. 网络与服务器编程框架库 acl_3.0.12 发布
  4. window.open与window.location.href
  5. Error:Can’t find import 2508 in coredll.dll问题解决
  6. python爬虫导入数据库_python爬虫爬下来的数据怎么导入到MySQL
  7. python代码性能分析_使用memory_profiler对代码进行性能分析会增加执行时间
  8. python爬虫微博图片,pyhton爬虫爬取微博某个用户所有微博配图
  9. 虚拟现实建模语言VRML
  10. 重启php7.0-fpm
  11. 行业点评:大疆反腐事件,员工的反驳
  12. java课程设计学生信息管理系统。
  13. 小班计算机游戏教案,幼儿园小班游戏教案15篇
  14. 使用Feign调用服务接口
  15. 新浪微博模拟登陆passwd参数rsa解密
  16. 戴尔服务器连接显示器无信号 键盘灯不亮,键盘灯不亮按键没反应怎么回事及解决办法...
  17. 支付宝小程序财富号基金相关页面之间相关跳转
  18. RK3566 AndroidR usb otg host和peripheral切换软件手动切换,写/sys/devices/platform/fe8a0000.usb2-phy/otg_mode
  19. Stackstorm启动ChatOps
  20. [历朝通俗演义-蔡东藩-前汉]第006回 阬深谷诸儒毙命 得原璧暴主惊心

热门文章

  1. Unittest-测试运行:查看测试结果
  2. STM32 嵌入式 超超超超超轻量级操作系统
  3. 7.springcloudAlibaba-网关gateway
  4. 中国人民大学孟生旺教授《金融数学》资源
  5. 大数据中心的解决方案,主要有哪些特点?
  6. JSON.parse()方法
  7. c语言内涵教程练习6,C语言内涵教程练习5参考答案.doc
  8. 前后台数据加密(java版)
  9. “芯片”三国之ARM篇:乱世枭雄曹孟德
  10. n皇后问题-回溯法求解