运行时如何让自定义字体生效?或如何通过代码重启项目?
解决Godot运行时切换自定义字体不生效的问题
问题根源
gui/theme/custom_font这个项目设置是Godot启动时(编辑器或游戏)一次性加载的,运行时修改ProjectSettings只会改变配置值,不会自动更新当前已经初始化的主题实例,所以界面不会立刻变化。
可行解决方案
不用重启项目,直接操作当前场景的主题实例即可:
步骤1:加载目标字体文件
先通过路径加载字体资源:
var target_font = load(font_path) as Font if not target_font: print("字体加载失败:", font_path) return
步骤2:修改全局主题并应用
获取场景树根节点的主题,设置默认字体后重新应用:
# 获取当前全局主题 var global_theme = get_tree().root.get_theme() # 设置主题的默认字体 global_theme.set_default_font(target_font) # 把修改后的主题重新赋值给根节点,让所有控件生效 get_tree().root.theme = global_theme
步骤3:同步ProjectSettings(可选)
如果需要让修改在下次启动时生效,同步保存项目设置:
ProjectSettings.set_setting("gui/theme/custom_font", font_path) ProjectSettings.save() # 保存到project.godot文件
额外场景:单独设置控件字体
如果只需要给某个控件切换字体,直接赋值控件的font属性即可:
$UI/Label.font = target_font $UI/Button.font = target_font
内容的提问来源于stack exchange,提问作者DotFX
相关产品推荐
相关产品推荐

