本文档概述了 Godot 的图形用户界面 (GUI) 系统,该系统允许在引擎内创建和管理交互式用户界面。GUI 系统构建在一个分层的控件框架之上,这些控件可以组合起来,为游戏内 UI 和编辑器工具创建复杂的界面。
有关编辑器自身 UI 实现的信息,请参阅 编辑器架构。
Godot 的 GUI 系统围绕 Control 节点构建,该节点是所有 UI 元素的基础类。该系统遵循分层结构,其中控件可以嵌套在其他控件内,以创建复杂的布局和交互。
来源
Control 类提供了核心功能,用于
控件可以使用不同的系统进行放置和调整大小
来源
GUI 系统包含多个专门用于文本显示和编辑的控件,每个控件都有不同的用途。
| 控制 | 目的 | 主要功能 |
|---|---|---|
| 标签 | 显示单行或多行文本 | 自动换行、截断、文本方向 |
| RichTextLabel | 显示富文本格式 | BBCode 标记、内嵌图像、自定义效果 |
| LineEdit | 单行文本输入 | 选择、撤销/重做、虚拟键盘 |
| TextEdit | 多行文本编辑 | 语法高亮、撤销/重做、行号 |
| CodeEdit | 面向代码的文本编辑 | 代码补全、缩进、折叠 |
来源
TextEdit 类是更复杂的 GUI 组件之一,支持诸如
来源
TextEdit 中的内部文本存储系统使用一种称为 Text 的结构,该结构管理
容器是专门的控件,可以自动管理子控件的布局。
Tree 控件是一个多功能的容器,用于显示带有列的层级数据
来源
Tree 控件是用以下方式构建的:
TreeItem 对象,代表单个树节点ItemList 控件提供了一个简单的可选项目列表
来源
Godot 的 GUI 系统包含多个用于创建弹出窗口和对话框的组件。
来源
PopupMenu 控件值得特别关注,因为它在 GUI 系统中被广泛用于上下文菜单
来源
许多 GUI 控件都与编辑器进行了特殊集成,为开发者提供增强的功能
编辑器扩展了 TextEdit 和 CodeEdit 控件,增加了额外的功能
来源
GUI 组件依赖于主题系统进行一致的视觉样式设置
来源
GUI 控件会缓存主题值以实现高效渲染,并且通常会根据其状态(正常、悬停、按下等)应用不同的样式。
Godot 的 GUI 系统包含辅助功能,以支持广泛的用户
来源
GUI 控件通过信号进行通信,这些信号可以连接到方法
控件通过 _gui_input() 方法处理输入
来源
Godot 的 GUI 系统通过模块化的、基于控件的架构,提供了一套全面的工具来构建交互式界面。通过理解不同控件之间的关系以及它们如何处理布局、输入和主题,开发人员可以为他们的游戏和应用程序创建丰富的用户界面。
该系统设计得非常灵活,允许创建简单的界面和复杂的自定义 UI 实现,同时在不同平台上保持一致的行为和外观。