50 lines
1.4 KiB
GDScript
50 lines
1.4 KiB
GDScript
extends Node
|
||
## 中文字体加载器
|
||
## 自动为所有 Label 和 RichTextLabel 应用中文字体
|
||
|
||
# 字体文件路径(根据你的实际路径修改)
|
||
const FONT_PATHS = [
|
||
"res://assets/fonts/msyh.ttc",
|
||
"res://assets/fonts/simhei.ttf",
|
||
"res://assets/fonts/simsun.ttc",
|
||
]
|
||
|
||
var chinese_font: Font = null
|
||
|
||
func _ready():
|
||
# 加载字体
|
||
load_chinese_font()
|
||
|
||
# 应用到所有现有节点
|
||
if chinese_font:
|
||
apply_font_to_all_labels(get_tree().root)
|
||
print("中文字体已应用到所有 Label 节点")
|
||
else:
|
||
push_warning("未找到中文字体文件,请检查 assets/fonts/ 目录")
|
||
|
||
func load_chinese_font():
|
||
# 尝试加载字体文件
|
||
for font_path in FONT_PATHS:
|
||
if FileAccess.file_exists(font_path):
|
||
chinese_font = load(font_path)
|
||
if chinese_font:
|
||
print("成功加载中文字体: " + font_path)
|
||
return
|
||
|
||
# 如果没有找到字体文件,尝试创建一个带回退的字体
|
||
push_warning("未找到预设的中文字体文件")
|
||
|
||
func apply_font_to_all_labels(node: Node):
|
||
# 如果是 Label 或 RichTextLabel,应用字体
|
||
if node is Label or node is RichTextLabel:
|
||
node.add_theme_font_override("font", chinese_font)
|
||
|
||
# 递归处理所有子节点
|
||
for child in node.get_children():
|
||
apply_font_to_all_labels(child)
|
||
|
||
# 公共方法:为新创建的节点应用字体
|
||
func apply_font_to_node(node: Node):
|
||
if chinese_font and (node is Label or node is RichTextLabel):
|
||
node.add_theme_font_override("font", chinese_font)
|