跳转至

基本概念

Markup UI 使用 HTML 文档描述界面结构,使用 CSS 设置布局与样式。页面引用的图片、字体等文件与文档一起构成界面资源,由平台插件加载并显示在引擎的界面控件中。

概念 含义
HTML 文档 定义元素、文字及资源引用的页面源文件
CSS 样式表 定义元素布局、尺寸、颜色和字体等样式的文件
资源 页面使用的样式表、图片、字体等文件
页面实例 文档加载后产生的运行时界面,具有当前显示和交互状态
数据上下文 提供给页面绑定使用的业务数据对象
平台插件 将页面资源、显示控件和输入操作接入引擎的集成组件

SDK 与平台插件

Markup UI SDK 提供 HTML / CSS 处理、布局、绘制、数据绑定与交互等共同能力。Unreal Engine 和 Unity 平台插件使用各平台的原生渲染系统,并接入引擎的编辑器、资产和界面系统。普通 App 可以基于 SDK 接入自定义渲染后端,例如 Skia,无需依赖游戏引擎。

Markup UI SDK 为使用原生渲染的 Unreal Engine、Unity 平台插件及使用自定义渲染的普通 App 提供共同能力 Markup UI SDK 为使用原生渲染的 Unreal Engine、Unity 平台插件及使用自定义渲染的普通 App 提供共同能力

图中的普通 App 分支表示基于 SDK 自行集成,不表示已经提供对应的应用框架插件。

HTML 文档与页面实例

HTML 文档是界面的内容定义。例如,一个玩家信息面板可以包含头像、角色名称、生命值和操作按钮。元素的排列与外观由 CSS 控制。

文档与页面实例是不同的对象:文档保存界面定义,页面实例保存加载后的界面状态。同一份文档可以用于创建多个页面实例;不应将引用同一文档理解为共享滚动位置、输入内容或焦点。

修改源文件后的资源更新

使用工程资产加载页面时,修改源文件后需要更新对应资产并重新加载页面。磁盘文件预览的更新方式以平台插件说明为准;源文件修改不代表运行中的页面会自动刷新。

CSS 样式表、图片和字体

页面通常由多个文件组成。以下为一个简单的设计时目录:

ui/
  pages/
    player.html
  styles/
    player.css
  images/
    avatar.png
  fonts/
    ui-font.ttf

在这个例子中,player.html 定义玩家面板的结构,player.css 设置样式,另外两个目录分别保存头像和字体。页面中的路径必须与实际资源位置一致。1

文档中的相对引用以文档所在目录为起点。例如,pages/player.html 引用样式表时可使用 ../styles/player.css。样式表内部的相对路径则以样式表所在目录为起点。

以 / 开头的路径表示全局配置的 资产目录。2 路径规则见资源路径。

设计文件与工程资产

设计文件是编辑器外维护的 HTML、CSS 和其他源文件;工程资产是通过平台插件导入或同步到引擎工程中的资源。

编辑器预览和游戏运行时使用各自配置的资源来源。

打包前确认资源已导入

源文件存在于磁盘上,不表示它已导入工程或包含在最终构建中。打包前应确认页面、样式表、图片和字体已进入平台插件的资源构建流程,否则可能出现页面或依赖资源加载失败。

页面尺寸与显示区域

引擎中的宿主控件为页面提供显示区域。HTML 元素在该区域内按 CSS 布局,页面内容与显示区域的大小共同决定最终显示结果。

  • 显示区域尺寸:控件可用于显示页面的宽度和高度。
  • 元素尺寸:由 CSS 及布局结果确定的元素大小。
  • DPI 与缩放:影响逻辑尺寸与实际屏幕像素之间的对应关系。

调整控件大小不等于修改所有元素的固定尺寸。需要适应不同窗口或分辨率时,应结合页面布局和宿主控件设置进行检查。详细说明见布局与尺寸及 DPI 与缩放。

数据上下文与交互

静态页面可直接显示 HTML 中的文字和图片。需要显示角色名称、生命值或物品列表等运行时数据时,可以通过数据上下文向页面提供业务对象,再使用数据绑定将对象属性关联到文本、元素属性或样式。

数据绑定还涉及更新通知:业务数据修改后,应使用平台提供的通知方式更新界面,不能仅凭一次属性赋值就假设页面一定会刷新。

事件用于表示点击、输入等交互;命令用于调用业务操作。例如,按钮的点击事件可以关联“选择物品”命令,并传递当前物品作为参数。

相关说明:数据上下文、数据绑定概述、事件与命令。

平台接入

HTML、CSS 和资源路径描述页面本身;平台插件负责将页面接入引擎的资产管理、界面控件和输入系统。

使用 UMG 中的 Markup UI 控件显示页面。文档及相关资产导入工程后,可在编辑器中预览;源文件修改后通过重新导入更新资产。

第一个游戏界面

使用 UI Toolkit 中的页面元素显示页面。设计文件同步到配置的资产目录后,可打开 HTML 资产进行预览。

第一个游戏界面

平台功能支持范围

数据绑定、可用事件、输入回写和编辑器功能的支持范围以各平台说明为准。公共章节中的概念与语法不代表所有能力均已在 UE 和 Unity 中接入。


  1. 此目录仅用于说明文件之间的引用关系,目录名称不是固定要求,也不表示文件会自动导入引擎工程。 ↩

  2. 这里的资产目录由平台插件配置,不是操作系统的磁盘根目录,也不是引擎工程中任意资源的全局查找入口。 ↩