RichTextLabel 中的 BBCode¶
前言¶
Label 节点非常适合显示基本文本,但它们有局限性。如果更改文本的颜色或对齐方式,则该更改会影响标签节点中的所有文本。没法只让一部分文本用一种颜色,或者只居中一部分文本。要绕过此限制,可以使用 RichTextLabel 。
RichTextLabel 允许在一个控件中显示复杂的文本标记。它内置用来生成标记的 API,同时也可以对 BBCode 进行解析。
大部分BBCode标签也可以用在 XML 格式的类参考文档 .
使用 BBCode¶
你可以把格式统一的文本写在“Text”属性里,但如果想用 BBCode 标记,你就应该换成使用“Bb Code”部分的“Text”属性( bbcode_text
)。写入这个属性将触发对你的标记的解析,从而按要求对文本进行格式化。在这之前,你需要打开“Bb Code”部分的“Enabled”复选框( bbcode_enabled
)。

例如, BBCode [color=blue]blue[/color]
将会出现蓝色的单词“blue”。

填写完 BBCode 的“Text”属性后,你可以看到普通的“Text”属性变成了不带 BBCode 的版本。这个文本属性会随 BBCode 属性更新,但你不能去编辑,否则就会丢失 BBCode 标记。所有修改都必须在 BBCode 参数里完成。
备注
要使用 [b]
(粗体), [i]
(斜体)或 [code]
等BBCode标签, 必须先为RichTextLabel节点设置对应的自定义字体(位于Custom Fonts下).
目前还没有用于控制文本垂直居中的BBCode标签.
参考¶
命令 |
标签 |
描述 |
加粗 |
|
使得 {text} 呈现粗体. |
斜体 |
|
使得 {text} 呈现斜体. |
下划线 |
|
使得 {text} 呈现下划线. |
删除线 |
|
在 {text} 上显示删除线。 |
代码 |
|
使得 {text} 使用代码字体(通常为等宽字体)。 |
居中 |
|
使得 {text} 水平居中. |
右对齐 |
|
使得 {text} 右对齐. |
填充 |
|
使{text}填充RichTextLabel的宽度. |
缩进 |
|
增加 {text} 的缩进级别. |
URL |
|
显示 {url},文字带有下划线并且可以点击。必须在“meta_clicked”信号中处理,点击才会生效。参阅 处理 [url] 标签点击。 |
URL(引用) |
|
使 {text} 引用 <url>(下划线并可点击)。必须在“meta_clicked”信号中处理,点击才会生效。参阅 处理 [url] 标签点击。 |
图片 |
|
插入由资源路径 {path} 所指示的图片. |
调整大小后的图片 |
|
插入由资源路径 {path} 所指示的图片, 并指定其宽度(保持宽高比). |
调整大小后的图片 |
|
插入由资源路径 {path} 所指示的图片, 指定其宽与高. |
字体 |
|
为 {text} 内容设置自定义字体, 字体由 <path> 指定. |
颜色 |
|
改变 {text} 的颜色, 可以使用颜色名称或十六进制码指定颜色, 如 |
表格 |
|
创建一个包含 <number>列数的表. |
单元格 |
|
将带有{text}的单元格添加到表格中. |
内置的颜色名称¶
以下列出 [color=<name>] 标签所支持的有效颜色名称:
aqua
black
blue
fuchsia
gray
green
lime
maroon
navy
purple
red
silver
teal
white
yellow
十六进制颜色代码¶
不透明的 RGB 颜色支持使用任何有效的 6 位十六进制数,例如 [color=#ffffff]白色[/color]
。也支持短的 RGB 颜色码,比如 #6f2
(等价于 #66ff22)。
透明的 RGB 颜色可以使用任意 8 位十六进制数,例如 [color=#88ffffff]半透明白色[/color]
。请注意这里的 alpha 通道是颜色码中的第一个分量,不是最后一个。也支持短的 RGBA 颜色码,比如 #86f2(等价于 #8866ff22)。
处理 [url]
标签点击¶
默认情况下, [url]
标签在单击时不执行任何操作.这是为了允许灵活使用 [url]
标签,而不是限制它们在Web浏览器中打开URL.
要对点击``[url]`` 标签进行处理,请将该 RichTextLabel 节点的 meta_clicked 信号连接到一个脚本函数上。
例如,将如下方法连接到 meta_clicked
上即可在用户的默认网页浏览器中打开被点击的 URL:
# This assumes RichTextLabel's `meta_clicked` signal was connected to
# the function below using the signal connection dialog.
func _richtextlabel_on_meta_clicked(meta):
# `meta` is not guaranteed to be a String, so convert it to a String
# to avoid script errors at run-time.
OS.shell_open(str(meta))
要支持更高级的用法,也可以在 [url]
标签的选项中保存 JSON,然后在处理 meta_clicked
信号的函数中解析。例如:[url={"example": "value"}]JSON[/url]
图像垂直偏移¶
您可以对图像使用自定义字体, 以便将其垂直对齐.
创建
BitmapFont
字体资源将这个位图字体的
ascent
属性设置为正值, 即你的高度偏移量按下面方式设置BBCode标签:
[font=<font-path>][img]{image-path}[/img][/font]
动画特效¶
BBCode也可以用来创建不同的文字动画特效. 内置了五种特效, 当然你也可以轻松创建出自已的特效.
波浪¶

波浪使文字上下波动, 它的标签格式是 [wave amp=50 freq=2][/wave]
. amp
控制特效高低, freq
控制文字上下移动的速度.
旋风¶

龙卷风使文字在圆圈内移动, 它的标签格式是 [tornado radius=5 freq=2][/tornado]
. radius
是控制偏移的圆半径, freq
是文字在圆中移动的速度.
抖动¶

抖动使文字摇动, 它的标签格式是 [shake rate=5 level=10][/shake]
. rate
控制文本抖动的速度, level
控制文本与原点的偏移程度.
渐隐¶

渐变在没有动画的文本上创建一个渐变效果, 它的标签格式是 [fade start=4 length=14][/fade]
. start
控制相对于插值淡入命令的起始位置, length
控制淡出应该发生多少个字符.
彩虹¶

彩虹让文字呈现出随时间变化的彩虹色, 它的标签格式是 [rainbow freq=0.2 sat=10 val=20][/rainbow]
. freq
是每秒完整的彩虹周期数, sat
是彩虹的饱和度, val
是彩虹的数值.