【Unity AR开发插件】五、运行示例程序

news/2024/6/21 5:09:56/文章来源:https://blog.csdn.net/qq_41140324/article/details/139266837

专栏

本专栏将介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用。

链接: Unity开发AR系列

热更数据制作:制作热更数据-AR图片识别场景

插件简介

通过热更技术实现动态地加载AR场景,简化了AR开发流程,让用户可更多地关注Unity场景内容的制作。

“EnvInstaller…”支持HybridCLR和ARCore的一键安装。

“AR SDK…”基于HybridCLR和ARFoundation实现,使热更技术贯穿AR开发的全流程。

包含热更数据制作与导出、热更数据上传与下载、热更数据的版本控制与数据加载

资源下载

“EnvInstaller”:点击下载

“AR SDK”:点击下载

文件目录

运行AR示例程序

在前面的《使用插件一键安装》、《配置带HybridCLR的AR开发环境》已介绍如何使用插件导入ARFoundation(ARCore)、HybridCLR相关的Package,以及如何划分程序集。

运行示例

划分程序集

示例中包含如下程序集定义,这里需要在"HybridCLR Settings"中划分程序集

程序集类型简介
Holo.Demo热更程序集包含各单项功能示例的程序集,示例Demo中使用
DynamicScene热更程序集AR动态场景示例的程序集,示例Demo中使用
Holo.RuntimeAOT程序集AR SDK核心程序集,已编译成dll并添加至项目中。
Assembly-CSharpAOT/热更都可Unity的默认全局程序集

打包程序

  1. 参考之前的文档,在“HybridCLR Settings”中完成“划分程序集”和“补充元数据”的步骤。

  2. 打开场景“/Assets/Scenes/AOT/Scene_AOT_2.unity”。

  3. 打开“Build Settings”,点击“Add Open Scenes”后,执行“Build”或“Build And Run”。

注意:若遇到gradle报错,请检查“compileSdkVersion”和“buildToolsVersion”版本。
BTW,网上很多教程,这里不再补充说明。

运行示例

UI使用的是AssetsStore中的“UI Samples”

进入首页:
首页

加载数据:

程序启动时,若本地数据存在,则自动载入热更数据。点击“开始”按钮,进入热更数据中的入口场景。

参考《制作热更数据-AR图片识别场景》制作热更数据,在“场景导出”时设置入口场景。

下载数据:

前提:服务器已上传热更数据

参考《制作热更数据-AR图片识别场景》制作热更数据,并将数据上传至服务器。

点击“更新”,会先校验数据版本,若服务器数据版本较新,则更新数据。

关键组件

DataDownLoader组件

方法:

  • StartDownload:开始下载数据(内部调用CheckDataVersion方法)

检视面板:

DataDownLoader

DllLoader组件

这里采用的是HybridCLR,通过初始化从打包成assetbundle的scene还原挂载的热更新脚本的方式。HybridCLR 文档

主要方法:

  • StartReadData:开始读取热更数据(包括热更程序集和AB包)
  • getEntrance:获取热更数据的入口场景名称

检视面板:

DllLoader

热更数据管理

DataDownLoader和DllLoader分别实现了数据下载和数据加载。
现创建了一个脚本,统一管理热更数据。参考工程中的HotFixDataMgr.cs

  • 给“开始”按钮添加点击事件,挂载HotFixDataMgr的StartGame()方法

StartGame

    public void StartGame(){if(m_Status != Status.READY){AndroidUtils.Toast("数据加载中,请稍候...");return;}//获取入口场景名称string mainSceneName = dllLoader.getEntrance();if (mainSceneName == null){AndroidUtils.Toast("请先更新数据,点击“更新”");return;}SceneManager.LoadSceneAsync(mainSceneName, LoadSceneMode.Single);}
  • 给“更新”按钮添加点击事件,挂载HotFixDataMgr的UpdateData()方法

UpdateData

    public void UpdateData(){if (m_Status != Status.READY){AndroidUtils.Toast("程序未就绪,请稍后再试!");return;}...if (dataDownLoader != null){m_Status = Status.UPDATING;//开始更新,切换为更新状态...//开始下载数据dataDownLoader.StartDownload();}}
  • HotFixDataMgr.cs的Awake方法中添加委托事件
    private void Awake(){...//数据处理失败时触发dataDownLoader.OnError += HandleError;dllLoader.OnError += HandleError;//进度更新dllLoader.OnProgressUpdate += HandleProgressFromDllLoader;dataDownLoader.OnProgressUpdate += HandleProgressFromDataDownLoader;...}.../// <summary>/// 处理错误/// </summary>/// <param name="message"></param>private void HandleError(string message){if (Application.platform == RuntimePlatform.Android){AndroidUtils.Toast("数据版本校验失败");}Debug.Log("数据版本校验失败");m_Status = Status.READY;}private void HandleProgressFromDataDownLoader(float progress){int pro = (int)(progress * 100);Debug.Log("数据同步进度:  " + pro + " %");}private void HandleProgressFromDllLoader(float progress){int pro = (int)(progress * 100);Debug.Log("数据加载进度:  " + pro + " %");}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ldbm.cn/p/430482.html

如若内容造成侵权/违法违规/事实不符,请联系编程新知网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这个橙子真的香!老司机徒手把玩香橙派Kunpeng Pro事后感言

水果派爱好者 作为一个水果派爱好者&#xff0c;我早在大学时期就购入了树莓派3B以及一堆传感器配件&#xff0c;把玩至今。 后来在工作的时候&#xff0c;由于不满足树莓派3B的性能&#xff0c;又购入了树莓派4B&#xff0c;玩得不亦乐乎&#xff0c;做出了很多因吹斯汀的小玩…

Python装饰器的应用

Python 中的装饰器是一种语法糖&#xff0c;可以在运行时&#xff0c;动态的给函数或类添加功能。装饰器本质上是一个函数&#xff0c;使用 函数名就是可实现绑定给函数的第二个功能 。它的作用就是在不修改被装饰对象源代码和调用方式的前提下为被装饰对象添加额外的功能。 …

微前端(无界)入门

主应用通过props给子应用传值 父子应用通过eventBus通信 通过路由同步实现记录子应用的路由状态 主应用 main.ts: import ./assets/main.cssimport { createApp } from vue import { createPinia } from pinia import WujieVue from wujie-vue3import App from ./App.vue impo…

【开源三方库】Aki:一行代码极简体验JSC++跨语言交互

一、简介 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;的前端开发语言是ArkTS&#xff0c;在TypeScript&#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是JavaScript&#xff08;简称JS&#xf…

【好书分享第十三期】AI数据处理实战108招:ChatGPT+Excel+VBA

文章目录 一、内容介绍二、内页插图三、作者简介四、前言/序言五、目录 一、内容介绍 《AI数据处理实战108招&#xff1a;ChatGPTExcelVBA》通过7个专题内容、108个实用技巧&#xff0c;讲解了如何运用ChatGPT结合办公软件Excel和VBA代码实现AI办公智能化、高效化。随书附赠了…

数据清洗(ETL)案例实操

文章目录 数据清洗&#xff08;ETL&#xff09;概述案例需求和分析代码实现和结果分析 数据清洗&#xff08;ETL&#xff09;概述 “ETL&#xff0c;是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;Extract&#xff09;、转换&…

软件工程基础

软件工程基础 甘特图&#xff08;Gantt Chart&#xff09; 关键字&#xff1a;开始、结束时间&#xff0c;并行关系 皮特图&#xff08;PERT Chart&#xff09; 关键字&#xff1a;开始、结束时间&#xff0c;依赖关系 黑盒测试 黑盒测试是一种软件测试方法&#xff0c;它专…

淡黄色,才是牙医公认的健康色号

牙齿越白越好吗?在各种牙膏广告里,牙齿总是白到发光,令多少人羡慕不已,不管怎么美白总是微微发黄。这是为何?事实上,根据牙医专家指出,健康牙齿的颜色并非纯白,淡黄色的牙齿表明牙釉质钙化程度高,是牙齿健康的表现!▲图源:央视网牙齿由外表面的牙釉质和内部的牙本质…

Three.js 中的场景与相机基础

Three.js 中的场景与相机基础 一、场景&#xff08;Scene&#xff09; 在 Three.js 中&#xff0c;场景是所有 3D 对象存在和交互的容器。艾斯视觉作为行业ui设计与前端开发服务商很高兴能在这里与你共同探讨&#xff1a;它就像是一个虚拟的 3D 空间&#xff0c;我们可以在其中…

LLama学习记录

学习前&#xff1a; 五大问题&#xff1a; 为什么SwiGLU激活函数能够提升模型性能&#xff1f;RoPE位置编码是什么&#xff1f;怎么用的&#xff1f;还有哪些位置编码方式&#xff1f;GQA&#xff08;Grouped-Query Attention, GQA&#xff09;分组查询注意力机制是什么&…

tcpdump源码分析

进入tcpdump.c&#xff08;函数入口&#xff09;之前&#xff0c;先看一些头文件netdissect.h里定义了一个数据结构struct netdissect_options来描述tcdpump支持的所有参数动作&#xff0c;每一个参数有对应的flag, 在tcpdump 的main 里面&#xff0c; 会根据用户的传入的参数来…

【大数据】Hadoop 2.X和1.X升级优化对比

目录 1.前言 2.hadoop 1.X的缺点和优化方向 3.解决NameNode的局限性 3.1.Hadoop HA 3.2.Haddop federation 4.yarn 5.周边组件 1.前言 本文是作者大数据系列中的一文&#xff0c;专栏地址&#xff1a; https://blog.csdn.net/joker_zjn/category_12631789.html?spm10…

DNS设置(linux)

1.配置dns需要现在/etc/sysconfig/network-scripts/目录下的ifcfg-ens33(后面数字也可能是其他的)中配置DNS 2.编辑/etc/resolv.conf文件&#xff0c;将上面网卡中加的dns服务器ip添加到此文件 vi /etc/resolv.conf重启网络配置 service network restart常用的dns的ip 国内…

科学技术创新杂志科学技术创新杂志社科学技术创新编辑部2024年第10期目录

科技创新 单桩穿越岩溶发育地层力学特征与溶洞处置措施研究 刘飞; 1-7《科学技术创新》投稿&#xff1a;cnqikantg126.com 基于多目标优化的中低压配电网电力规划研究 向星山;杨承俊;张寒月; 8-11 激光雷达测绘技术在工程测绘中的应用研究 张军伟;闫宏昌; 12-15 …

无线麦克风什么牌子的音质效果好?一文读懂无线领夹麦克风哪款好

​在当今的数字时代&#xff0c;无线技术已经深入到我们生活的方方面面&#xff0c;无线领夹麦克风便是其中的佼佼者。它们为讲者、表演者以及那些需要在移动中讲话的人们提供了解放双手和自由移动的可能。本文旨在探讨无线领夹麦克风的多种用途&#xff0c;以及如何挑选最适合…

【UnityShader入门精要学习笔记】第十五章 使用噪声

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 使用噪声上…

理解多线程看这一篇就够了

一、基本概念与关系 程序 程序是含有指令和数据的文件&#xff0c;静态地存储在磁盘等存储设备上。它是软件的实体&#xff0c;但未被激活。 进程 进程是程序的一次执行过程&#xff0c;是系统运行程序的基本单位。当程序被操作系统加载并执行时&#xff0c;就成为一个进程&a…

gpt-4o继续迭代考场安排程序 一键生成考场清单

接上两篇gpt-4o考场安排-CSDN博客&#xff0c;考场分层次安排&#xff0c;最终exe版-CSDN博客 当然你也可以只看这一篇。 今天又添加了以下功能&#xff0c;程序见后。 1、自动分页&#xff0c;每个考场打印一页 2、添加了打印试场单页眉 3、添加了页脚 第X页&#xff0c;…

【优选算法】分治 {三分快排:三指针优化,随机选key,快速选择算法;归并排序:统计数组中的逆序对,统计数组中的翻转对;相关编程题解析}

一、经验总结 1.1 三分快排 优化一&#xff1a;三指针优化 之前学习的快速排序无法妥善处理相等或重复序列的排序问题&#xff08;有序且三数取中无效&#xff09;&#xff0c;使快速排序的效率无法达到最优。 为了解决重复序列的问题&#xff0c;我们将原先的双指针法&…

ModuleNotFoundError: No module named ‘qcloud_cos‘

这个错误表示Python无法找到名为qcloud_cos的模块。qcloud_cos是腾讯云提供的一个Python SDK&#xff0c;用于与腾讯云对象存储&#xff08;COS&#xff09;服务进行交互。 使用pip安装qcloud_cos报以下错误 解决办法 pip3 install cos-python-sdk-v5