用户界面
几乎所有应用都需要界面,例如 HUD、菜单、按钮、对话框、场景标签或 XR 面板。PlayCanvas 既支持将实体组成的界面作为场景的一部分绘制在画布内,也支持用 HTML 和 CSS 在画布外构建界面,很多应用会结合两者。

画布内界面由组件组成。屏幕是根节点,下方的元素构成图像、文本和组,按钮、布局组和滚动视图等组件则添加交互行为。无论使用编辑器、直接使用引擎、PlayCanvas React 还是 Web Components,都能使用这些组件。本章各页先统一解释概念,再展示在不同开发方式下的用法。
两种界面构建方式
| 画布内界面 | HTML 与 CSS | |
|---|---|---|
| 世界空间与 XR | 屏幕可放入场景,并支持 XR | 仅覆盖在画布之上 |
| 文本输入 | 无内置支持 | 文本框、自动补全、屏幕键盘 |
| 无障碍访问 | 屏幕阅读器和键盘导航无法识别 | 使用合适元素即可支持 |
| 样式与布局 | 锚点、布局组、九宫格精灵 | CSS 及浏览器布局和动画 |
| 字体与表情 | 由字体文件生成 MSDF 字体,表情通过画布字体实现 | 支持 Web 字体与表情 |
| 编辑器 | 在编辑器中构建和预览 | 编写 HTML、CSS 资源或文件 |
| 画布捕获 | 包含在画布截图和视频中 | 不包含在画布捕获中 |
| 性能 | 随场景绘制,支持批处理 | 由浏览器在画布之外布局和绘制 |
画布内界面适合 HUD、场景或 XR 中的界面,以及必须出现在画布内容中的信息。HTML 适合菜单、设置、表单和长文本。两者可以配合,例如 HTML 设置页暂停带画布 HUD 的应用,详见 HTML 与 CSS。
构建单元
| 组件 | 作用 | 编辑器 | React | Web Components | API |
|---|---|---|---|---|---|
| 屏幕 | 界面的根节点,可覆盖在视图上或位于场景中 | 屏幕 | <Screen> | <pc-screen> | ScreenComponent |
| 元素 | 图像、文本或组 | 元素 | <Element> | <pc-element> | ElementComponent |
| 按钮 | 悬停/按下状态和点击事件 | 按钮 | 引擎组件 | <pc-button> | ButtonComponent |
| 布局组 | 将子项排列为行、列和网格 | 布局组 | 引擎组件 | <pc-layout-group> | LayoutGroupComponent |
| 布局子项 | 覆盖布局组对子项尺寸的处理 | 布局子项 | 引擎组件 | <pc-layout-child> | LayoutChildComponent |
| 滚动视图 | 在遮罩视口内滚动内容 | 滚动视图 | 引擎组件 | <pc-scroll-view> | ScrollViewComponent |
| 滚动条 | 轨道上的可拖动滑块,用于滚动视图和滑块控件 | 滚动条 | 引擎组件 | <pc-scrollbar> | ScrollbarComponent |
PlayCanvas React 提供 Screen 和 Element 组件。其余功能通过引擎组件添加,各页会给出所需的小型辅助组件。
本章内容
- 入门:配置不同开发方式下的界面,并构建第一个界面。
- 布局
- 图像
- 文本
- 交互
- 常用控件:进度条、滑块、开关、对话框、列表和拖放等。
- 世界空间与 XR
- HTML 与 CSS:通过 DOM 在画布上方构建界面。
- 绘制顺序与性能:界面绘制机制与优化。
- 故障排查:常见问题及成因。