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

Godot 4.0.beta9:如何通过脚本让Panel容器内Label文本居中?

在Godot中通过脚本修正UI节点偏移问题

你遇到的问题核心是StaticBody2D原点默认在中心,而PanelContainer这类Control节点原点默认在左上角,两者原点差异导致UI显示偏移。以下是纯脚本的解决方法:

修改后的完整创建节点代码

func create_distance_marker():
    var static_body = StaticBody2D.new()
    static_body.name = "distance_location"
    static_body.position = Global.mid_point
    add_child(static_body)
    
    var panel_container = PanelContainer.new()
    panel_container.name = "panel_container"
    # 让PanelContainer的中心与StaticBody2D中心重合
    panel_container.rect_pivot = panel_container.rect_size / 2
    panel_container.rect_position = Vector2.ZERO
    static_body.add_child(panel_container)
    
    var distance_label = Label.new()
    distance_label.name = "distance_label"
    distance_label.text = str(Global.distance)
    # 设置Label文本水平+垂直居中
    distance_label.align = Label.ALIGN_CENTER
    distance_label.valign = Label.VALIGN_CENTER
    # 让Label填充整个Panel,确保居中效果生效
    distance_label.anchor_left = 0.0
    distance_label.anchor_right = 1.0
    distance_label.anchor_top = 0.0
    distance_label.anchor_bottom = 1.0
    panel_container.add_child(distance_label)

关键设置说明

  1. PanelContainer位置修正:
    通过rect_pivot = rect_size / 2把Panel的轴心设为自身中心,再将rect_position设为Vector2.ZERO,就能让Panel的中心和父节点StaticBody2D的中心完全对齐,解决偏移问题。

  2. Label居中配置:

    • align = Label.ALIGN_CENTER:控制文本水平居中
    • valign = Label.VALIGN_CENTER:控制文本垂直居中
    • 把Label的四个锚点设为0到1,让它完全填充Panel容器,确保无论后续文本或Panel大小变化,居中效果都能保持。

如果需要支持动态尺寸调整,可以把Panel的锚点也设为0.5(代码示例中可取消注释对应部分),这样Panel会自动以父节点中心为基准适配尺寸。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:20:52