You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Godot 4.5.1:Label节点文字动态缩放后如何保持清晰无模糊?

Godot 4.5.1 动态适配字体避免模糊失真解决方案

问题场景

  • 使用PanelContainer包裹Label节点(命名DisplayWord),通过缩放容器实现文本适配画布,但缩放后字体出现插值失真,需要保持类似"Nearest"插值的清晰效果
  • 已尝试.ttf、.otf、.fnt格式字体,均未解决模糊问题

解决方法

1. 放弃节点缩放,动态调整字体大小

缩放节点会导致字体纹理拉伸模糊,正确思路是直接计算适配容器的字体尺寸,而非缩放节点:

# 在脚本中添加该函数,文本变化或容器尺寸改变时调用
func update_font_to_fit_container():
    var container_rect = $PanelContainer.get_rect()
    var text_min_size = $PanelContainer/DisplayWord.get_minimum_size()
    
    if text_min_size.x == 0 or text_min_size.y == 0:
        return
    
    # 计算宽高方向的适配比例,取最小值防止溢出
    var scale_x = container_rect.width / text_min_size.x
    var scale_y = container_rect.height / text_min_size.y
    var fit_scale = min(scale_x, scale_y)
    
    # 取整设置字体大小,避免小数导致的模糊
    var original_size = $PanelContainer/DisplayWord.get_theme_font_size("font_size")
    $PanelContainer/DisplayWord.add_theme_font_size_override("font_size", int(original_size * fit_scale))

2. 配置字体的插值模式

选中DisplayWord节点,在Inspector中调整字体设置:

  • 找到Theme Overrides > Font > Font,点击字体资源的齿轮图标进入设置
  • 开启Force Bitmap,将Filter设置为FILTER_NEAREST
  • 若用代码动态设置:
    var target_font = $PanelContainer/DisplayWord.get_theme_font("font")
    target_font.filter = Font.FILTER_NEAREST
    target_font.force_bitmap = true
    

3. Bitmap Font(.fnt)优化技巧

如果使用.fnt字体,避免单尺寸缩放,改用多尺寸字体切换:

# 根据目标尺寸加载最接近的预定义字体
func load_matching_bitmap_font(target_size: int):
    # 预先准备不同尺寸的字体文件,比如font_16.fnt、font_32.fnt等
    var available_sizes = [16, 32, 64, 128]
    var closest_size = available_sizes.reduce(func(prev, curr):
        return prev if abs(prev - target_size) < abs(curr - target_size) else curr)
    
    var new_font = load("res://fonts/font_" + str(closest_size) + ".fnt")
    $PanelContainer/DisplayWord.add_theme_font_override("font", new_font)

4. 调整Label的拉伸设置

  • 将DisplayWord的Stretch Mode设为STRETCH_MODE_KEEP,禁止文本拉伸
  • 关闭Shrink Center选项,避免文本被压缩变形

内容的提问来源于stack exchange,提问作者Krishnabm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 23:12:41