团结引擎 OpenHarmony 平台全面支持 UAAL,实现引擎能力嵌入原生应用

团结引擎1.4版本已于近日正式发布!在这一版本中,OpenHarmony 平台迎来了一个具有里程碑意义的更新:全面支持 Used as a Library(UAAL)。UAAL 这一技术方案,具有将引擎嵌入原生应用的独特能力,其便捷性和高度可复用性特别适用于移动平台。该方案不仅展现了引擎的跨平台优势,也得到了开发者的广泛认可和热烈响应。

随着 OpenHarmony 平台开发者的逐步壮大,越来越多关于如何更灵活地在 OpenHarmony 原生应用中使用团结引擎的呼声逐渐出现,例如,关于“OpenHarmony 导出工程能否改造多 HAP 以 feature 方式运行”这一问题,得到了大家的关注和讨论。为此,我们将 UAAL 技术方案成功扩展至 OpenHarmony,进一步提升了 OpenHarmony 平台的可操作性与灵活性。

什么是UAAL?

Used as a Library(UAAL)是一项允许将引擎功能集成到现有的原生应用程序(如 Android、iOS、OpenHarmony 应用)中的技术。当将引擎作为一个库来使用时,就可以把引擎的一些核心功能,如渲染、物理模拟、资源管理等模块提取出来,嵌入到其他移动平台原生的项目架构中。

UAAL的主要特点有:

1. 嵌入运行:Tuanjie 作为一个模块运行,而不是完整的应用,利用 Tuanjie 的强大图形引擎、物理引擎、动画系统和插件生态。原生应用可以在需要时调用 Tuanjie 引擎。

2. 灵活的界面集成:Tuanjie 场景可以作为应用界面的一部分,与原生界面无缝切换。

3. 灵活的工作流:开发者可以继续使用 Tuanjie 编辑器创建和调试 3D 内容,并将其集成到原生应用中。

4. 跨团队协作:Tuanjie 开发团队可以专注于 Tuanjie 内容开发,原生开发团队处理整体应用架构。

如何在 OpenHarmony 原生应用中使用 UAAL?

下载安装团结引擎(1.4.0 及以上版本),打开项目后。通过顶部菜单栏:File >> Build Settings 打开 Build Settings 面板,在面板左侧将平台切换至 OpenHarmony。

在 OpenHarmony 平台的导出功能中,新增了一个“Export Project”勾选框,勾选后,会自动提供“Export Project Type” 供用户选择:

  • 选择:Default,为此前提供的默认导出 DevEco 工程方式。

  • 选择:Use As A Library(Recommended),即为 UAAL 模式导出。

导出工程可以直接使用 DevEco 打开并基于此进一步开发,也可以选择将导出工程中的 tuanjieLib 模块集成进已有的 OpenHarmony 项目工程中进行下一步开发。

注:为保证当前版本导出流程和原有默认流程的一致性,“Export Project Type” 选项为过渡方案,未来版本中,UAAL 将作为默认导出方式提供,原有导出方式即将下线!

OpenHarmony UAAL 导出和默认导出有什么区别?

勾选 Use As A Library(Recommended) 并导出后,无需额外操作,即为 OpenHarmony UAAL 模式。导出项目的工程结构目录相较之前自动变化:

  • 工程项目中,entry 模块只有简单入口

  • 新增 tuanjieLib 模块,引擎相关的代码资源均位于该模块

OpenHarmony UAAL 示例

UAAL 提供一键式打包服务,开发者在 Tuanjie Editor 中完成场景内相关开发并一键导出后,可直接在导出工程的基础上开发,也可以将导出工程中的 tuanjieLib 模块集成进已有的 OpenHarmony 项目工程中。UAAL 开发全流程可参考以下视频:

OpenHarmony UAAL 的实现原理

OpenHarmony 的 Hvigor 工程组织的形式是以模块(module)为单位进行管理的,一个功能内可以包含一个或多个模块,默认包含一个"entry"模块,构建后得到一个可安装 app(后缀是 .hap)。

在非 UAAL 模式下,团结项目是作为"entry"模块整体导出成一个 Hvigor 工程进行构建。为了让团结能够作为一个单独的库(Library)方便地嵌入到原生应用中,团结引擎将以一个"har"模块的形式嵌入到工程中。

TuanjiePlayer 以 har 包形式导出

  1. 团结引擎渲染的页面(Page)组件化: 页面组件化之后,极大地提高了开发者使用团结引擎渲染能力的自由度。理论上可以将团结引擎嵌入到原生 App 的任意位置。

  2. 调用机制:团结引擎作为以"har"模块(模块名为"tuanjieLib")嵌入到工程之后,其它模块如果要访问团结引擎内的接口和资源,需要通过"tuanjieLib"作为入口进行访问。

  3. 团结工程输出成一个 module:

  4. 首先需要修改团结工程的 hvigorfile.ts,将输出改成'har'包的形式(非 UAAL 模式下,默认是输出 'hap' 包)。

  5. 接着还需要对应修改模块配置文件,使其符合"har"模块的配置。

以上就是团结引擎 1.4 版本中 OpenHarmony 平台的更新。团结引擎将倾听国内开发者的声音,为大家带来更多大家想要的功能,并且始终保持引擎的高性能、高画质,以及稳定性。非常期待得到你的反馈,与我们一起共建中国版的实时 3D 引擎。

[1] 团结引擎官网:

https://unity.cn/tuanjie/tuanjieyinqing

[2] 团结引擎问答专区:

https://developer.unity.cn/plate/tuanjie-engine?tab=ask

[3] 团结引擎用户手册:

https://docs.unity.cn/cn/tuanjiemanual/Manual/UnityManual.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT&…

【Elasticsearch】Elasticsearch检索方式全解析:从基础到实战(二)

接着上一篇文章;我们继续来研究es的复杂检索 文章目录 (1) bool用来做复合查询(2)Filter【结果过滤】(3)term(4)Aggregation(执行聚合) (1) bool用来做复合查询 复合语…

如何使用DiskGenius做备份并且恢复?

如何使用DiskGenius做备份并且恢复? 前言 前言 此操作适用于将1台旧电脑的数据迁移到新电脑上 一、进入PE使用DG分区进行备份镜像 二、分区备份 1选择要操作的硬盘——2选择操作分区——3备份分区 1选择文件路径(保存pmf文件的位置选择存到U盘中&…

ZZNUOJ(C/C++)基础练习1091——1100(详解版)⭐

目录 1091 : 童年生活二三事(多实例测试) C C 1092 : 素数表(函数专题) C C 1093 : 验证哥德巴赫猜想(函数专题) C C 1094 : 统计元音(函数专题) C C 1095 : 时间间隔(多…

【Spring AI】基于SpringAI+Vue3+ElementPlus的QA系统实现一

整理不易,请不要吝啬你的赞和收藏。 1. 前言 这是 SpringAI 系列的第二篇文章,这篇文章将介绍如何基于 RAG 技术,使用 SpringAI Vue3 ElementPlus 实现一个 Q&A 系统。本文使用 deepseek 的 DeepSeek-V3 作为聊天模型,使用…

【Vue】在Vue3中使用Echarts的示例 两种方法

文章目录 方法一template渲染部分js部分方法一实现效果 方法二template部分js or ts部分方法二实现效果 贴个地址~ Apache ECharts官网地址 Apache ECharts示例地址 官网有的时候示例显示不出来,属于正常现象,多进几次就行 开始使用前,记得先…

1.【线性代数】——方程组的几何解释

1.方程组的几何解释 概述举例举例一1. matrix2.row picture3.column picture 概述 三种表示方法 matrixrow picturecolumn picture 举例 举例一 { 2 x − y 0 − x 2 y 3 \begin{cases} 2x - y 0 \\ -x 2y 3 \end{cases} {2x−y0−x2y3​ 1. matrix [ 2 − 1 − 1 2…

KITE提示词框架:引导大语言模型的高效新工具

大语言模型的应用日益广泛。然而,如何确保这些模型生成的内容在AI原生应用中符合预期,仍是一个需要不断探索的问题。以下内容来自于《AI 原生应用开发:提示工程原理与实战》一书(京东图书:https://item.jd.com/1013604…

【论文阅读】Revisiting the Assumption of Latent Separability for Backdoor Defenses

https://github.com/Unispac/Circumventing-Backdoor-Defenses 摘要和介绍 在各种后门毒化攻击中,来自目标类别的毒化样本和干净样本通常在潜在空间中形成两个分离的簇。 这种潜在的分离性非常普遍,甚至在防御研究中成为了一种默认假设,我…

基于Springmvc+MyBatis+Spring+Bootstrap+EasyUI+Mysql的个人博客系统

基于SpringmvcMyBatisSpringBootstrapEasyUIMysql的个人博客系统 1.项目介绍 使用Maven3Spring4SpringmvcMybatis3架构;数据库使用Mysql,数据库连接池使用阿里巴巴的Druid;使用Bootstrap3 UI框架实现博客的分页显示,博客分类&am…

香港中文大学 Adobe 推出 MotionCanvas:开启用户掌控的电影级图像视频创意之旅。

简介: 亮点直击 将电影镜头设计引入图像到视频的合成过程中。 推出了MotionCanvas,这是一种简化的视频合成系统,用于电影镜头设计,提供整体运动控制,以场景感知的方式联合操控相机和对象的运动。 设计了专门的运动条…

数据结构 单链表的模拟实现

一、链表的定义 线性表的链式存储就是链表。 它是将元素存储在物理上任意的存储单元中,由于⽆法像顺序表⼀样通过下标保证数据元素之间的逻辑关系,链式存储除了要保存数据元素外,还需额外维护数据元素之间的逻辑关系,这两部分信息…

Avalonia-wpf介绍

文章目录 工程简述窗体样式暗色模式亚克力模糊效果ExperimentalAcrylicBorder” 和 “ExperimentalAcrylicMaterial” 的介绍ExperimentalAcrylicBorderExperimentalAcrylicMaterial按钮排版按钮图标按钮命令响应式命令添加一个新对话框对话框窗口样式对话框的输入与输出显示对…

Node.js开发属于自己的npm包(发布到npm官网)

在 Node.js 中开发并发布自己的 npm 包是一个非常好的练习,可以帮助我们更好地理解模块化编程和包管理工具,本篇文章主要阐述如何使用nodejs开发一个属于自己的npm包,并且将其发布在npm官网。在开始之前确保已经安装了 Node.js 和 npm。可以在…

操作系统常见调度算法的详细介绍

目录 1. 先进先出算法(FIFO) 2. 前后台调度算法 3. 最短处理机运行期优先调度算法(短进程优先算法) 4. 最高响应比优先调度算法(HRRN) 5. 优先级调度算法 6. 时间片轮转调度算法 7. 多级反馈队列轮转…

ADB详细教程

目录 一、ADB简介 二、配置 配置环境变量 验证是否安装成功 三、简单使用 基本命令 设备连接管理 USB连接 WIFI连接(需要USB线) 开启手机USB调试模式 开启USB调试 四、其他 更换ADB默认启动端口 一、ADB简介 ADB(Android Debug…

WEB攻防-第60天:PHP反序列化POP链构造魔术方法流程漏洞触发条件属性修改

目录 一、序列化与反序列化基础 1.1 什么是序列化与反序列化 二、魔术方法的生命周期 2.1 常见的魔术方法 2.2 模式方法的生命周期触发调用 2.2.1 __construct() 2.2.2 __destruct() 2.2.3 __sleep() 2.2.4 __wakeup() 2.2.5 __invoke() 2.2.6 __toS…

SQLMesh系列教程-2:SQLMesh入门项目实战(下篇)

上篇我介绍了环境搭建、duckdb数据准备、sqlmesh数据模型、plan命令运行。本文继续介绍审计、测试、生成血缘关系以及python模型等。 有两种方法可以在SQLMesh中创建宏。一种方法是使用Python,另一种方法是使用Jinja。这里我们创建Python宏。让我们构建简单的Python…

自主项目面试点总结

1、许苑–OJ判题系统 技术栈:Spring BootSpring Cloud AlibabaRedisMybatisMQDocker 项目地址: https://github.com/xuyuan-upward/xyoj-backend-microservice 1.1、项目介绍: 一个基于微服务的OJ系统,具备能够根据管理员预设的题目用例对用户提交的代…

Macbook Pro快速搭建Easysearch学习环境

在学习过程中,我们有时身边没有可用的服务器,这时就需要借助自己的 Mac 来安装和学习 Easysearch。然而,Easysearch 官网并未提供 Mac 版本的安装教程,下面我将详细整理我在 Mac 上安装和使用 Easysearch 的折腾经历。 Easysearc…