2023-08-24-资源与脚本的热更流程

实现MR场景的热更新

需求描述

TA制作资源场景,场景+C#脚本打包后,直接可在程序中替换数据,不需要再次打包应用程序。

功能实现

实现方式简述

  • 通过Unity的AssetsBundle的方式,实现资源的导入导出
  • 通过“HybridCLR”实现C#脚本的热更
  • 通过数据清单记录热更文件和入口场景信息

数据检查

通过"获取版本文件 -> 比对版本信息 -> 读取数据清单 -> 下载数据"几个步骤更新数据。

数据加密

由于unity打的ab包可通过诸如AssetsStudioGUI这类插件打开和提取,HybridCLR生成的热更DLL是未混淆的,因此需要对数据进行加密。

开发步骤

以下几步将描述如何实现MR眼镜加载热更场景。

前提条件

使用Holo当前版本的sdk

SDK

注:
为Xvisio B50R构建热更场景需要引入XVisio SDK
为ARCore构建热更场景需额外按ARCore官方文档配置环境

配置环境

  • 通过 "Assets"->"Import Package"导入 holo sdk。
  • 按需导入Xvisio SDK 或配置ARCore

配置Plyaer Settings

  • 若是为Xvisio设备构建热更场景,需按如下配置Resolution and Presentation,其它平台按平台对应的文档配置

  • 在“Other Settings”->Graphics APIs中 只保留 “OpenGLES3”

  • 设置Configuration,Min API,按不同的AR平台设置,此处针对XVisio B50R应该设置为API 25,若是ARCore ,此处设置为24。

关闭增量GC,设置后台脚本为IL2CPP

当前"HybridCLR"仅商业版支持增量GC,社区版将在2023年8月28日支持增量GC。

设置写入权限

  • 关闭代码裁减 Other Settings -> Optimization -> Strip Engine Code

若是启用代码采集,则需要 参考文档 按需配置补充元数据。

安装 HybridCLR

  • 执行菜单栏"Holo-XR"->“HotUpdate”->"Import HybridCLR"选项

待菜单栏出现“HybridCLR”后,表示导入成功。若未出现,重启Unity编辑器即可。

  • 执行"HybridCLR"-> "Installer"

当状态值变为True时,表示安装成功

设置Holo-Settings

执行“Holo-XR”->"Setting",启用热更选项,选择XR平台

实现主体程序

以开发XVisio为例,其它平台区别不大。

构建场景

  • 通过菜单栏选项,快速创建XVisio的默认组件

层级菜单中新增如下内容:

  • 新建空对象,添加DataDownLoader组件,并设置数据路径

  • 通过菜单栏选项,创建DllLoader对象

  • 设置DataDownLoader事件,当资源下载完成后执行DllLoader对象的StartReadData方法

打包程序

打包apk

注:由于还无热更内容,此程序启动后并不会进入AR场景。

制作热更场景

以XVisio为例,构造支持CSLAM的热更场景

创建热更程序集

一般来说,必须将热更新代码独立为assembly,才能方便地进行热更新。

  • 创建热更程序集“hotfix”

  • 在HybridCLR Settings中配置热更Assembly Definitions

编写测试脚本

  • 创建热更脚本,需确保脚本位置在“hotfix”程序集中

注意事项

  • 热更程序集“hotfix”中的脚本是无法依赖Unity预定义程序集(如:Assembly-CSharp)。
  • 热更程序集“hotfix”可依赖Dll,因此可将原Assembly-CSharp中的代码编译成DLL。
  • 热更程序集“hotfix”可通过反射机制访问Assembly-CSharp中的类与方法。
  • Assembly-CSharp是Unity的默认全局程序集,它也可以像普通dll一样当作热更新程序集。

更多信息请参考HybridCLR文档

添加场景资源

  • XVisio可使用CSLAM功能,通过菜单栏选项“Holo-XR”->“XVisio Config”->"Import MapLoader"创建CSLAM地图加载对象。

在路径栏填入服务器上的homap数据全路径

  • 在场景中添加资源(模型、粒子特效等),将所有AR场景中要显示的内容资源都拖至“Holo XR World”->"SceneNode"节点下

场景打包

  • 在Build Settings中添加要导出的场景

  • 执行菜单栏“Holo-XR”->"BuildBundle-Android",指定入口场景后,点击”导出“

入口场景:即主体程序在读取热更数据后,首先进入的场景。

上传数据包

  • 场景打包的结果为zip包和version文件

  • 将数据上传至服务器即可

运行程序

Editor运行

在unity中运行时,输出日志如下:

真机运行

  • 启动主体程序,程序会自动进行版本校验和数据下载。
  • 进入场景后,MR眼镜端的投屏截图如下:

posted @ 2024-05-30 17:31  EQ-雪梨蛋花汤  阅读(74)  评论(0)    收藏  举报