菜单

文本编辑组件

相关源文件

此页面记录了 Godot 引擎中的文本编辑组件,概述了它们的架构、主要功能以及不同类之间的关系。这些组件对于引擎的编辑器界面和游戏 UI 系统都至关重要。有关在游戏开发中使用这些组件的信息,请参阅相关的类文档。

文本组件概述

Godot 提供了几个具有不同用途的专用文本组件

  1. TextEdit - 基础多行文本编辑器
  2. CodeEdit - 专用于代码的文本编辑器,具有语法高亮和自动补全功能
  3. LineEdit - 单行文本输入字段
  4. RichTextLabel - 支持格式化(BBCode)、图像和样式的文本显示
  5. Label - 简单的纯文本显示

此外,编辑器还实现了

  1. CodeTextEditor - 基于 CodeEdit 的编辑器封装,支持查找/替换
  2. ScriptTextEditor - 脚本专用编辑器
  3. TextShaderEditor - 着色器专用编辑器

文本组件层次结构

来源

编辑器组件

来源

核心文本编辑组件

TextEdit

TextEdit 是 Godot 中基础的多行文本编辑器控件。它负责

  • 文本缓冲区管理
  • 多个光标和选择
  • 文本换行
  • 行号显示
  • 上下文菜单
  • 边栏(行号、折叠标记等)
  • 剪切/复制/粘贴
  • 撤销/重做历史

文本缓冲区实现

TextEdit 的核心是其管理文本数据的 Text 内部类

Text 类管理带有格式和视觉表示的单独文本行。每行包含

  • 文本内容(data
  • 输入法编辑器数据(ime_data
  • 用于渲染的文本段落缓冲区
  • 边栏信息
  • 行度量(高度、宽度)

来源

编辑操作

TextEdit 实现以下核心编辑操作

操作描述方法
插入文本在光标位置插入文本insert_text_at_caret()
删除文本删除选中文本或光标处的字符_backspace(), _delete()
复制将选中文本复制到剪贴板_copy()
剪切将选中文本剪切到剪贴板_cut()
粘贴从剪贴板粘贴文本_paste()
撤销/重做跟踪并应用编辑历史undo(), redo()

来源

选择系统

TextEdit 支持多个光标和选择

来源

CodeEdit

CodeEdit 扩展了 TextEdit,增加了特定于编程的功能

  • 语法高亮
  • 代码补全
  • 行折叠
  • 自动缩进
  • 括号匹配
  • 切换注释
  • 行高亮

代码补全系统

来源

语法高亮

CodeEdit 中的语法高亮是通过 SyntaxHighlighter 资源实现的

来源

LineEdit

LineEdit 是一个单行文本输入字段,处理

  • 带光标定位的文本输入
  • 密码模式
  • 清除按钮
  • 占位符文本
  • 上下文菜单
  • 长文本的水平滚动
  • 文本选择

输入法编辑器(IME)支持

LineEdit 和 TextEdit 都支持非拉丁字符输入的输入法编辑器

来源

RichTextLabel

RichTextLabel 提供富文本显示功能

  • BBCode 格式化
  • 图像和图标
  • 自定义字体和格式
  • 表格和列表
  • 可点击的 meta 标签

富文本项模型

RichTextLabel 使用分层项模型来表示富文本

来源

BBCode 解析

RichTextLabel 解析 BBCode 标签来创建格式化文本

标签示例效果
b[b]粗体[/b]粗体文本
i[i]斜体[/i]斜体文本
color[color=red]彩色[/color]彩色文本
font[font=res://font.tres]自定义字体[/font]自定义字体
img[img]res://icon.png[/img]显示图像
table[table=2]cell1,cell2[/table]创建表格
cell[cell]内容[/cell]表格单元格

来源

标签

Label 是最简单的文本显示控件

  • 纯文本显示
  • 对齐选项
  • 自动换行模式
  • 裁剪选项
  • 垂直/水平对齐

来源

编辑器文本组件

编辑器在其核心控件之上实现了专门的文本组件

CodeTextEditor

CodeTextEditor 包装 CodeEdit 以提供额外的编辑器功能

  • 查找/替换对话框
  • 转到行对话框
  • 编辑器设置集成
  • 行编辑实用程序(修剪空格、转换缩进)

来源

ScriptTextEditor

ScriptTextEditor 扩展了 CodeTextEditor 以支持脚本编辑

  • 脚本验证
  • 错误/警告显示
  • 符号查找
  • 导航助手
  • 脚本资源管理

来源

TextShaderEditor

TextShaderEditor 提供专门的着色器编辑

  • 着色器编译
  • 错误高亮
  • 着色器特定功能
  • 警告显示
  • 性能提示

来源

与引擎系统的集成

辅助功能支持

文本组件通过 DisplayServer 接口实现辅助功能

来源

输入处理

文本组件处理不同级别的输入

  1. 原始输入事件 - 通过 _gui_input()
  2. 键盘处理 - 通过 _handle_unicode_input()
  3. IME 支持 - 用于复杂脚本输入
  4. 快捷键 - Ctrl+C,Ctrl+V 等

来源

编辑器集成

文本编辑组件通过以下方式与编辑器集成

  • 编辑器设置(字体、颜色、行为)
  • 语法高亮
  • 代码补全
  • 外部工具

来源

结论

Godot 的文本编辑组件构成了引擎本身和游戏开发的一个综合系统。分层架构允许不同组件之间共享代码,同时在需要时实现专门化。

对于游戏开发者来说,LineEditTextEditRichTextLabelLabel 提供了各种文本输入和显示选项。对于插件开发者,编辑器实现展示了如何扩展这些组件以适应特定用例。