RichTextLabel

继承: Control < Item < Object

用于显示可以包含不同字体样式、图像和基本格式的文本的控件。

描述

一种用于显示文本的控件,该文本可包含自定义字体、图像和基本格式。RichTextLabel 将这些内容作为内部标签栈进行管理。它还能根据给定的宽度/高度进行自适应调整。

注意newline()push_paragraph()"\n""\r\n"p标签以及对齐标签会开始一个新段落。每个段落会在其自身的双向文本环境中独立处理。如果你想在段落内强制换行,可以使用任何其他换行字符,例如换页符(U+000C)、下一行符(U+0085)、行分隔符(U+2028)。

注意:对 text 的赋值会清空标签栈,并根据该属性的内容重新构建。对 text 所做的任何编辑都将清除之前通过其他手动方式(如 append_text() 以及 push_* / pop() 方法)所做的编辑。

注意:RichTextLabel 不支持嵌套的 BBCode 标签。例如,不要使用 [b]bold[i]bold italic[/b]italic[/i],而应使用 [b]bold[i]bold italic[/i][/b][i]italic[/i]

注意push_*/pop_* 函数不会影响 BBCode。

s注意:与 Label 不同,RichTextLabel 没有用于将文本水平居中对齐的 属性。相反,启用 bbcode_enabled 并将文本用 [center] 标签包围,如下所示:[center]Example[/center]。目前也没有内置的垂直对齐文本的方法,但可以通过依赖锚点/容器以及 fit_content 属性来模拟实现

属性

方法

void

add_image(image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), key: Variant = null, pad: bool = false, tooltip: String = "", size_in_percent: bool = false)

void

add_text(text: String)

void

append_text(bbcode: String)

void

clear()

void

deselect()

int

get_character_line(character: int)

int

get_character_paragraph(character: int)

int

get_content_height() const

int

get_content_width() const

int

get_line_count() const

float

get_line_offset(line: int)

Vector2i

get_line_range(line: int)

PopupMenu

get_menu() const

int

get_paragraph_count() const

float

get_paragraph_offset(paragraph: int)

String

get_parsed_text() const

String

get_selected_text() const

int

get_selection_from() const

float

get_selection_line_offset() const

int

get_selection_to() const

int

get_total_character_count() const

VScrollBar

get_v_scroll_bar()

int

get_visible_line_count() const

int

get_visible_paragraph_count() const

void

install_effect(effect: Variant)

bool

invalidate_paragraph(paragraph: int)

bool

is_finished() const

bool

is_menu_visible() const

bool

is_ready() const

void

menu_option(option: int)

void

newline()

void

parse_bbcode(bbcode: String)

Dictionary

parse_expressions_for_values(expressions: PackedStringArray)

void

pop()

void

pop_all()

void

pop_context()

void

push_bgcolor(bgcolor: Color)

void

push_bold()

void

push_bold_italics()

void

push_cell()

void

push_color(color: Color)

void

push_context()

void

push_customfx(effect: RichTextEffect, env: Dictionary)

void

push_dropcap(string: String, font: Font, size: int, dropcap_margins: Rect2 = Rect2(0, 0, 0, 0), color: Color = Color(1, 1, 1, 1), outline_size: int = 0, outline_color: Color = Color(0, 0, 0, 0))

void

push_fgcolor(fgcolor: Color)

void

push_font(font: Font, font_size: int = 0)

void

push_font_size(font_size: int)

void

push_hint(description: String)

void

push_indent(level: int)

void

push_italics()

void

push_language(language: String)

void

push_list(level: int, type: ListType, capitalize: bool, bullet: String = "•")

void

push_meta(data: Variant, underline_mode: MetaUnderline = 1, tooltip: String = "")

void

push_mono()

void

push_normal()

void

push_outline_color(color: Color)

void

push_outline_size(outline_size: int)

void

push_paragraph(alignment: HorizontalAlignment, base_direction: TextDirection = 0, language: String = "", st_parser: StructuredTextParser = 0, justification_flags: BitField[JustificationFlag] = 163, tab_stops: PackedFloat32Array = PackedFloat32Array())

void

push_strikethrough()

void

push_table(columns: int, inline_align: InlineAlignment = 0, align_to_row: int = -1)

void

push_underline()

bool

remove_paragraph(paragraph: int, no_invalidate: bool = false)

void

scroll_to_line(line: int)

void

scroll_to_paragraph(paragraph: int)

void

scroll_to_selection()

void

select_all()

void

set_cell_border_color(color: Color)

void

set_cell_padding(padding: Rect2)

void

set_cell_row_background_color(odd_row_bg: Color, even_row_bg: Color)

void

set_cell_size_override(min_size: Vector2, max_size: Vector2)

void

set_table_column_expand(column: int, expand: bool, ratio: int = 1, shrink: bool = true)

void

update_image(key: Variant, mask: BitField[ImageUpdateMask], image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), pad: bool = false, tooltip: String = "", size_in_percent: bool = false)

主题属性


信号

finished() 🔗

在文档完全加载时触发。

注意:这可能发生在处理文本以进行绘图之前。在此信号之后第一次绘制文档之前,滚动值可能无效。


meta_clicked(meta: Variant) 🔗

当用户点击元(URL)标签之间的内容时触发。如果元是在BBCode中定义的,例如[url={"key": "value"}]文本[/url],那么此信号的参数将始终是String类型。如果需要特定类型或对象,必须使用push_meta()方法手动将数据插入标签堆栈。或者,你可以根据String输入的内容将其转换为所需的类型(例如对其调用JSON.parse())。例如,以下方法可以连接到meta_clicked,以便使用用户的默认网络浏览器打开点击的URL:

# 此前提是:已通过信号连接对话框,将 RichTextLabel 的 `meta_clicked` 信号连接到了下方的函数.
func _richtextlabel_on_meta_clicked(meta):
    # `meta` 为 Variant 类型,因此需将其转换为 String 类型,以避免运行时脚本错误.
    OS.shell_open(str(meta))

meta_hover_ended(meta: Variant) 🔗

当鼠标退出元标记时触发。


meta_hover_started(meta: Variant) 🔗

当鼠标输入元标记时触发。


枚举

enum ListType: 🔗

ListType LIST_NUMBERS = 0

每个列表项都有一个数字标记。

ListType LIST_LETTERS = 1

每个列表项都有一个字母标记。

ListType LIST_ROMAN = 2

每个列表项都有一个罗马数字标记。

ListType LIST_DOTS = 3

每个列表项都有一个填充的圆圈标记。


enum MenuItems: 🔗

MenuItems MENU_COPY = 0

复制选定的文本。

MenuItems MENU_SELECT_ALL = 1

选择整个RichTextLabel文本。

MenuItems MENU_MAX = 2

表示MenuItems枚举的大小。


enum MetaUnderline: 🔗

MetaUnderline META_UNDERLINE_NEVER = 0

元标记不显示下划线,即使meta_underlinedtrue

MetaUnderline META_UNDERLINE_ALWAYS = 1

如果meta_underlinedtrue,则元标记始终显示下划线。

MetaUnderline META_UNDERLINE_ON_HOVER = 2

如果meta_underlinedtrue,则当鼠标光标在元标记上时,元标记会显示下划线。


flags ImageUpdateMask: 🔗

ImageUpdateMask UPDATE_TEXTURE = 1

如果设置了该位,update_image()会更改图像纹理。

ImageUpdateMask UPDATE_SIZE = 2

如果设置了该位,update_image()将更改图像大小。

ImageUpdateMask UPDATE_COLOR = 4

如果设置了该位,update_image()改变图像颜色。

ImageUpdateMask UPDATE_ALIGNMENT = 8

如果设置了该位,update_image()将更改图像内联对齐方式。

ImageUpdateMask UPDATE_REGION = 16

如果设置了该位,update_image()改变图像纹理区域。

ImageUpdateMask UPDATE_PAD = 32

如果设置了该位,update_image()将更改图像填充。

ImageUpdateMask UPDATE_TOOLTIP = 64

如果设置了该位,update_image()将更改图像工具提示。

ImageUpdateMask UPDATE_WIDTH_IN_PERCENT = 128

如果设置了该位,update_image()将图像宽度从/更改为百分比。


属性说明

AutowrapMode autowrap_mode = 3 🔗

如果设置为TextServer.AUTOWRAP_OFF以外的值,则文本将被包裹在节点的边界矩形内。要查看每个模式的行为方式,请参阅AutowrapMode


bool bbcode_enabled = false 🔗

  • void set_use_bbcode(value: bool)

  • bool is_using_bbcode()

如果true,则标签使用BBCode格式。

注意:这只影响text的内容,不影响标签堆栈。


bool context_menu_enabled = false 🔗

  • void set_context_menu_enabled(value: bool)

  • bool is_context_menu_enabled()

如果true,右键单击将显示上下文菜单。


Array custom_effects = [] 🔗

  • void set_effects(value: Array)

  • Array get_effects()

The currently installed custom effects. This is an array of RichTextEffects.

To add a custom effect, it's more convenient to use install_effect().


bool deselect_on_focus_loss_enabled = true 🔗

  • void set_deselect_on_focus_loss_enabled(value: bool)

  • bool is_deselect_on_focus_loss_enabled()

如果true,则当焦点丢失时,所选文本将被取消选择。


bool drag_and_drop_selection_enabled = true 🔗

  • void set_drag_and_drop_selection_enabled(value: bool)

  • bool is_drag_and_drop_selection_enabled()

如果true,则允许拖放选定的文本。


bool fit_content = false 🔗

  • void set_fit_content(value: bool)

  • bool is_fit_content_enabled()

如果true,则标签的最小大小将自动更新以适应其内容,匹配Label的行为。


bool hint_underlined = true 🔗

  • void set_hint_underline(value: bool)

  • bool is_hint_underlined()

如果true,则标签会在提示标签下划线,例如[hint=description]{text}[/hint]


HorizontalAlignment horizontal_alignment = 0 🔗

控制文本的水平对齐方式。支持左、中、右和填充或对齐。将其设置为HorizontalAlignment常量之一。


BitField[JustificationFlag] justification_flags = 163 🔗

行填充对齐规则。有关详细信息,请参阅JustificationFlag


String language = "" 🔗

用于换行和文本整形算法的语言代码,如果留空则使用当前语言环境。


bool meta_underlined = true 🔗

  • void set_meta_underline(value: bool)

  • bool is_meta_underlined()

如果true,则标签下划线为元标记,例如[url]{text}[/url]。如果meta_clicked连接到函数,则单击这些标签可以调用函数。


int progress_bar_delay = 1000 🔗

  • void set_progress_bar_delay(value: int)

  • int get_progress_bar_delay()

显示加载进度条的延迟,以毫秒为单位。设置为-1以完全禁用进度条。

注意:仅当启用threaded时才会显示进度条。


bool scroll_active = true 🔗

  • void set_scroll_active(value: bool)

  • bool is_scroll_active()

如果true,滚动条是可见的。将其设置为false不会完全阻止滚动。参见scroll_to_line()


bool scroll_following = false 🔗

  • void set_scroll_follow(value: bool)

  • bool is_scroll_following()

如果true,则窗口向下滚动以自动显示新内容。


bool selection_enabled = false 🔗

  • void set_selection_enabled(value: bool)

  • bool is_selection_enabled()

如果true,则标签允许选择文本。


bool shortcut_keys_enabled = true 🔗

  • void set_shortcut_keys_enabled(value: bool)

  • bool is_shortcut_keys_enabled()

如果true,则启用上下文菜单项的快捷键,即使上下文菜单被禁用。


StructuredTextParser structured_text_bidi_override = 0 🔗

为结构化文本设置BiDi算法覆盖。


Array structured_text_bidi_override_options = [] 🔗

  • void set_structured_text_bidi_override_options(value: Array)

  • Array get_structured_text_bidi_override_options()

为BiDi覆盖设置附加选项。


int tab_size = 4 🔗

  • void set_tab_size(value: int)

  • int get_tab_size()

与单个制表符长度相关联的空格数。不影响文本标签中的\t,仅影响缩进标签。


PackedFloat32Array tab_stops = PackedFloat32Array() 🔗

将文本与给定的制表符对齐。

Note: The returned array is copied and any changes to it will not update the original property value. See PackedFloat32Array for more details.


String text = "" 🔗

BBCode格式的标签文本。不代表对内部标签堆栈的手动修改。编辑时删除其他方法所做的更改。

注意:如果bbcode_enabledtrue,则不建议将+=运算符与text一起使用(例如text+="some string"),因为它会替换整个文本并可能导致速度变慢。它还会擦除使用push_*方法添加到堆栈中的所有BBCode。使用append_text()来添加文本,除非您绝对需要关闭在早期方法调用中打开的标签。


TextDirection text_direction = 0 🔗

基本文本写作方向。


bool threaded = false 🔗

  • void set_threaded(value: bool)

  • bool is_threaded()

如果true,则文本处理在后台线程中完成。


VerticalAlignment vertical_alignment = 0 🔗

控制文本的垂直对齐方式。支持顶部、中心、底部和填充。将其设置为VerticalAlignment常量之一。


int visible_characters = -1 🔗

  • void set_visible_characters(value: int)

  • int get_visible_characters()

要显示的字符数。如果设置为-1,则显示所有字符。这在对话框中出现的文本进行动画处理时很有用。

注意:设置此属性会相应地更新visible_ratio


VisibleCharactersBehavior visible_characters_behavior = 0 🔗

设置visible_charactersvisible_ratio时的剪辑行为。有关详细信息,请参阅VisibleCharactersBehavior


float visible_ratio = 1.0 🔗

  • void set_visible_ratio(value: float)

  • float get_visible_ratio()

要显示的字符的比例,相对于字符总数(参见get_total_character_count())。如果设置为1.0,则显示所有字符。如果设置为0.5,则仅显示一半字符。这在对话框中出现的文本进行动画设置时非常有用。

注意:设置此属性会相应地更新visible_characters


方法说明

void add_image(image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), key: Variant = null, pad: bool = false, tooltip: String = "", size_in_percent: bool = false) 🔗

将图像的开始和结束标记添加到标记堆栈,可选地提供widthheight来调整图像大小,提供color来为图像着色,以及提供region以仅使用图像的一部分。

如果widthheight设置为0,将调整图像大小以保持原始长宽比。

如果未设置widthheight,但设置了region,则将使用区域的rect。

key是可选标识符,可用于通过update_image()修改图像。

如果设置了pad,并且图像小于widthheight指定的大小,则添加图像填充以匹配大小而不是放大。

如果设置了size_in_percent,则widthheight值是控件宽度的百分比,而不是像素。


void add_text(text: String) 🔗

将原始的非BBCode解析文本添加到标记堆栈。


void append_text(bbcode: String) 🔗

解析bbcode并根据需要将标签添加到标签堆栈中。

注意:使用此方法,您无法关闭在以前的append_text()调用中打开的标签。这样做是为了提高性能,尤其是在更新大型RichTextLabels时,因为每次重建整个BBCode会更慢。如果您绝对需要在未来的方法调用中关闭标签,请附加text而不是使用append_text()


void clear() 🔗

清除标签堆栈,导致标签不显示任何内容。

注意:此方法不影响text,如果重新绘制标签,其内容将再次显示。但是,将text设置为空String也会清除堆栈。


void deselect() 🔗

清除当前选择。


int get_character_line(character: int) 🔗

返回提供的字符位置的行号。行号和字符号都是零索引的。

注意:如果启用了threaded,则此方法返回文档加载部分的值。使用is_finished()finished来确定文档是否已完全加载。


int get_character_paragraph(character: int) 🔗

返回提供的字符位置的段落号。段落号和字符号都是零索引的。

注意:如果启用了threaded,则此方法返回文档加载部分的值。使用is_finished()finished来确定文档是否已完全加载。


int get_content_height() const 🔗

返回内容的高度。

注意:如果启用了threaded,则此方法返回文档加载部分的值。使用is_finished()finished来确定文档是否已完全加载。


int get_content_width() const 🔗

返回内容的宽度。

注意:如果启用了threaded,则此方法返回文档加载部分的值。使用is_finished()finished来确定文档是否已完全加载。


int get_line_count() const 🔗

返回文本中的总行数。换行文本计为多行。

注意:如果visible_characters_behavior设置为TextServer.VC_CHARS_BEFORE_SHAPING,则仅计算可见的换行。

注意:如果启用了threaded,则此方法返回文档加载部分的值。使用is_finished()finished来确定文档是否已完全加载。


float get_line_offset(line: int) 🔗

返回在提供的索引处找到的行的垂直偏移量。

注意:如果启用了threaded,则此方法返回文档加载部分的值。使用is_finished()finished来确定文档是否已完全加载。


Vector2i get_line_range(line: int) 🔗

返回给定line的第一个和最后一个可见字符的索引,作为Vector2i

注意:如果visible_characters_behavior设置为TextServer.VC_CHARS_BEFORE_SHAPING,则仅计算可见的换行。

注意:如果启用了threaded,则此方法返回文档加载部分的值。使用is_finished()finished来确定文档是否已完全加载。


PopupMenu get_menu() const 🔗

返回此 RichTextLabelPopupMenu。默认情况下,在 RichTextLabel 上单击鼠标右键时会显示此菜单。

你可以添加自定义菜单项或删除标准菜单项。确保你的 ID 不会与标准 ID 冲突(请参阅 MenuItems)。例如:

func _ready():
    var menu = get_menu()
    # 移除 “全选(Select All)” 项.
    menu.remove_item(MENU_SELECT_ALL)
    # 添加自定义项.
    menu.add_separator()
    menu.add_item("Duplicate Text", MENU_MAX + 1)
    # 连接回调函数.
    menu.id_pressed.connect(_on_item_pressed)

func _on_item_pressed(id):
    if id == MENU_MAX + 1:
        add_text("\n" + get_parsed_text())

警告: 这是一个必需的内部节点,移除并释放它可能会导致崩溃。如果你希望隐藏它或其任何子节点,请使用它们的 Window.visible 属性


int get_paragraph_count() const 🔗

返回段落的总数(标签堆栈的文本标签中的换行符或p标签)。将包装文本视为一个段落。


float get_paragraph_offset(paragraph: int) 🔗

返回在提供的索引处找到的段落的垂直偏移量。

注意:如果启用了threaded,则此方法返回文档加载部分的值。使用is_finished()finished来确定文档是否已完全加载。


String get_parsed_text() const 🔗

返回没有BBCode标记的文本。


String get_selected_text() const 🔗

返回当前选择文本。不包括BBCodes。


int get_selection_from() const 🔗

如果选择处于活动状态,则返回当前选择的第一个字符索引,否则返回-1。不包括BBCodes。


float get_selection_line_offset() const 🔗

如果选择处于活动状态,则返回当前选择的垂直线偏移量,否则返回-1.0


int get_selection_to() const 🔗

如果选择处于活动状态,则返回当前选择的最后一个字符索引,否则返回-1。不包括BBCodes。


int get_total_character_count() const 🔗

返回文本标签中的字符总数。不包括BBCodes。


VScrollBar get_v_scroll_bar() 🔗

返回垂直滚动条。

警告:这是一个必需的内部节点,删除和释放它可能会导致崩溃。


int get_visible_line_count() const 🔗

返回可见行数。

注意:如果启用了threaded,则此方法返回文档加载部分的值。使用is_finished()finished来确定文档是否已完全加载。


int get_visible_paragraph_count() const 🔗

返回可见段落的数量。如果段落中至少有一行可见,则该段落被视为可见。

注意:如果启用了threaded,则此方法返回文档加载部分的值。使用is_finished()finished来确定文档是否已完全加载。


void install_effect(effect: Variant) 🔗

安装一个自定义效果。这也可以通过 custom_effects 属性在检视面板中完成。effect 应该是一个有效的 RichTextEffect

Example:以下脚本继承自 RichTextEffect

# effect.s3
class_name MyCustomEffect
extends RichTextEffect

var bbcode = "my_custom_effect"

# ...

上述效果可以通过脚本安装在RichTextLabel中:

# rich_text_label.s3
extends RichTextLabel

func _ready():
    install_effect(MyCustomEffect.new())

    # 或者,如果在继承 RichTextEffect 的脚本中不使用 `class_name` :
    install_effect(preload("res://effect.s3").new())

bool invalidate_paragraph(paragraph: int) 🔗

使paragraph和所有后续段落缓存无效。


bool is_finished() const 🔗

如果启用了threaded,如果后台线程已完成文本处理,则返回true,否则始终返回true


bool is_menu_visible() const 🔗

返回菜单是否可见。使用this而不是get_menu()。可见来提高性能(因此避免创建菜单)。


bool is_ready() const 🔗

已弃用: 请改用 is_finished()

如果启用了threaded,如果后台线程已完成文本处理,则返回true,否则始终返回true


void menu_option(option: int) 🔗

执行MenuItems枚举中定义的给定操作。


void newline() 🔗

将换行符添加到标记堆栈。


void parse_bbcode(bbcode: String) 🔗

append_text()的赋值版本。清除标记堆栈并插入新内容。


Dictionary parse_expressions_for_values(expressions: PackedStringArray) 🔗

将BBCode参数expressions解析为字典。


void pop() 🔗

终止当前标签。在push_*方法之后使用手动关闭BBCodes。不需要遵循add_*方法。


void pop_all() 🔗

终止push_*方法打开的所有标签。


void pop_context() 🔗

终止上次push_context()调用后打开的标记(包括上下文标记),如果堆栈上没有上下文标记,则终止所有标记。


void push_bgcolor(bgcolor: Color) 🔗

[bgcolor]标签添加到标签堆栈。


void push_bold() 🔗

将带有粗体字体的[fon]标签添加到标签堆栈。如果当前不在[i]标签中,这与添加[b]标签相同。


void push_bold_italics() 🔗

将带有粗体斜体字体的[fon]标签添加到标签堆栈。


void push_cell() 🔗

[cell]标记添加到标记堆栈。必须在[table]标记内。有关详细信息,请参阅push_table()。使用set_table_column_expand()设置列扩展比,set_cell_border_color()设置单元格边框,set_cell_row_background_color()设置单元格背景,set_cell_size_override()覆盖单元格大小,以及set_cell_padding()设置填充。


void push_color(color: Color) 🔗

[color]标签添加到标签堆栈。


void push_context() 🔗

将上下文标记添加到标记堆栈。请参见pop_context()


void push_customfx(effect: RichTextEffect, env: Dictionary) 🔗

将自定义效果标签添加到标签堆栈中。效果不需要在custom_effects中。环境直接传递给效果。


void push_dropcap(string: String, font: Font, size: int, dropcap_margins: Rect2 = Rect2(0, 0, 0, 0), color: Color = Color(1, 1, 1, 1), outline_size: int = 0, outline_color: Color = Color(0, 0, 0, 0)) 🔗

[dropcap]标记添加到标记堆栈。Drop hat(大写字母)是段落开头的装饰元素,大于文本的其余部分。


void push_fgcolor(fgcolor: Color) 🔗

[fgcolor]标签添加到标签堆栈。


void push_font(font: Font, font_size: int = 0) 🔗

[fon]标签添加到标签堆栈。在其持续时间内覆盖默认字体。

0传递给font_size将使用现有的默认字体大小。


void push_font_size(font_size: int) 🔗

[font_size]标记添加到标记堆栈。在其持续时间内覆盖默认字体大小。


void push_hint(description: String) 🔗

[hint]标签添加到标签堆栈。与BBCode[hint=something]{text}[/hint]相同。


void push_indent(level: int) 🔗

[indent]标记添加到标记堆栈。将level乘以当前tab_size以确定新的边距长度。


void push_italics() 🔗

将带有斜体字体的[fon]标签添加到标签堆栈。如果当前不在[b]标签中,这与添加[i]标签相同。


void push_language(language: String) 🔗

添加用于文本整形算法和Open-Type字体功能的语言代码。


void push_list(level: int, type: ListType, capitalize: bool, bullet: String = "•") 🔗

[ol][ul]标记添加到标记堆栈。将level乘以当前tab_size以确定新的边距长度。


void push_meta(data: Variant, underline_mode: MetaUnderline = 1, tooltip: String = "") 🔗

将元标记添加到标记堆栈。类似于BBCode[url=something]{text}[/url],但支持非String元数据类型。

如果meta_underlinedtrue,则元标记显示下划线。可以使用underline_mode自定义此行为。

注意:元标记在单击时默认不执行任何操作。要分配单击时的行为,请将meta_clicked连接到单击元标记时调用的函数。


void push_mono() 🔗

将具有等宽字体的[fon]标签添加到标签堆栈。


void push_normal() 🔗

将具有普通字体的[fon]标签添加到标签堆栈。


void push_outline_color(color: Color) 🔗

[outline_color]标记添加到标记堆栈。为其持续时间添加文本大纲。


void push_outline_size(outline_size: int) 🔗

[outline_size]标记添加到标记堆栈。在其持续时间内覆盖默认文本大纲大小。


void push_paragraph(alignment: HorizontalAlignment, base_direction: TextDirection = 0, language: String = "", st_parser: StructuredTextParser = 0, justification_flags: BitField[JustificationFlag] = 163, tab_stops: PackedFloat32Array = PackedFloat32Array()) 🔗

[p]标签添加到标签堆栈。


void push_strikethrough() 🔗

[s]标记添加到标记堆栈。


void push_table(columns: int, inline_align: InlineAlignment = 0, align_to_row: int = -1) 🔗

[table=lie,inline_align]标记添加到标记堆栈。使用set_table_column_expand()设置列扩展比。使用push_cell()添加单元格。


void push_underline() 🔗

[u]标签添加到标签堆栈。


bool remove_paragraph(paragraph: int, no_invalidate: bool = false) 🔗

从标签中删除一段内容。如果段落存在,则返回true

paragraph参数是要删除的段落的索引,它可以取区间[0,get_paragraph_count()-1]中的值。

如果no_invalidate设置为true,则后续段落的缓存不会无效。如果删除的段落是完全自包含的(没有未关闭的标签),或者此调用是复杂编辑操作的一部分,并且invalidate_paragraph()将在操作结束时调用,则使用它来更快地更新。


void scroll_to_line(line: int) 🔗

滚动窗口的顶部行以匹配line


void scroll_to_paragraph(paragraph: int) 🔗

滚动窗口的顶部行以匹配paragraph的第一行。


void scroll_to_selection() 🔗

滚动到当前选择的开头。


void select_all() 🔗

选择所有文本。

如果selection_enabledfalse,则不会发生选择。


void set_cell_border_color(color: Color) 🔗

设置表格单元格边框的颜色。


void set_cell_padding(padding: Rect2) 🔗

设置表格单元格的内部填充。


void set_cell_row_background_color(odd_row_bg: Color, even_row_bg: Color) 🔗

设置表格单元格的颜色。可以指定交替行的单独颜色。


void set_cell_size_override(min_size: Vector2, max_size: Vector2) 🔗

设置表格单元格的最小和最大大小覆盖。


void set_table_column_expand(column: int, expand: bool, ratio: int = 1, shrink: bool = true) 🔗

编辑选定列的展开选项。如果expandtrue,则该列按其展开比率与其他列的比率成比例展开。

例如,比率为3和4的2列加上可用宽度为70像素将分别扩展30和40像素。

如果expandfalse,则该列不会对总比率做出贡献。


void update_image(key: Variant, mask: BitField[ImageUpdateMask], image: Texture2D, width: int = 0, height: int = 0, color: Color = Color(1, 1, 1, 1), inline_align: InlineAlignment = 5, region: Rect2 = Rect2(0, 0, 0, 0), pad: bool = false, tooltip: String = "", size_in_percent: bool = false) 🔗

使用keykey更新现有图像。仅更新由mask位指定的属性。请参阅add_image()


主题属性说明

Color default_color = Color(1, 1, 1, 1) 🔗

默认文本颜色。


Color font_outline_color = Color(0, 0, 0, 1) 🔗

文本大纲的默认色调。


Color font_selected_color = Color(0, 0, 0, 0) 🔗

选定文本的颜色,当selection_enabledtrue时使用。如果等于Color(0,0,0,0),它将被忽略。


Color font_shadow_color = Color(0, 0, 0, 0) 🔗

字体阴影的颜色。


Color selection_color = Color(0.1, 0.1, 1, 0.8) 🔗

选择框的颜色。


Color table_border = Color(0, 0, 0, 0) 🔗

默认单元格边框颜色。


Color table_even_row_bg = Color(0, 0, 0, 0) 🔗

偶数行的默认背景颜色。


Color table_odd_row_bg = Color(0, 0, 0, 0) 🔗

奇数行的默认背景颜色。


int line_separation = 0 🔗

行间距增加(以像素为单位),行间距增加到行下降。这个值可以是负数。


int outline_size = 0 🔗

文本大纲的大小。

注意:如果使用启用了FontFile.multichannel_signed_distance_field的字体,则其FontFile.msdf_pixel_range必须设置为至少两倍outline_size的值才能使轮廓渲染看起来正确。否则,轮廓可能会比预期的更早被切断。


int shadow_offset_x = 1 🔗

字体阴影的水平偏移量。


int shadow_offset_y = 1 🔗

字体阴影的垂直偏移量。


int shadow_outline_size = 1 🔗

阴影轮廓的大小。


int table_h_separation = 3 🔗

表中元素的水平分离。


int table_v_separation = 3 🔗

表中元素的垂直分隔。


int text_highlight_h_padding = 3 🔗

[fgcolor][bgcolor]标签绘制的框周围的水平填充。这不会影响文本选择的外观。


int text_highlight_v_padding = 3 🔗

[fgcolor][bgcolor]标签绘制的框周围的垂直填充。这不会影响文本选择的外观。


Font bold_font 🔗

用于粗体文本的字体。


Font bold_italics_font 🔗

用于粗体斜体文本的字体。


Font italics_font 🔗

斜体文本使用的字体。


Font mono_font 🔗

用于等宽文本的字体。


Font normal_font 🔗

默认文本字体。


int bold_font_size 🔗

用于粗体文本的字体大小。


int bold_italics_font_size 🔗

粗体斜体文本使用的字体大小。


int italics_font_size 🔗

斜体文本使用的字体大小。


int mono_font_size 🔗

用于等宽文本的字体大小。


int normal_font_size 🔗

默认文本字体大小。


StyleBox focus 🔗

RichTextLabel聚焦时使用的背景。focusStyleBox显示在底座StyleBox上方,因此应使用部分透明的StyleBox来确保底座StyleBox保持可见。表示轮廓或下划线的StyleBox可以很好地用于此目的。要禁用焦点视觉效果,请分配StyleBoxEmpty资源。请注意,禁用焦点视觉效果会损害键盘/控制器导航可用性,因此出于可访问性原因不建议这样做。


StyleBox normal 🔗

RichTextLabel的正常背景。