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)
关键设置说明
PanelContainer位置修正:
通过rect_pivot = rect_size / 2把Panel的轴心设为自身中心,再将rect_position设为Vector2.ZERO,就能让Panel的中心和父节点StaticBody2D的中心完全对齐,解决偏移问题。Label居中配置:
align = Label.ALIGN_CENTER:控制文本水平居中valign = Label.VALIGN_CENTER:控制文本垂直居中- 把Label的四个锚点设为0到1,让它完全填充Panel容器,确保无论后续文本或Panel大小变化,居中效果都能保持。
如果需要支持动态尺寸调整,可以把Panel的锚点也设为0.5(代码示例中可取消注释对应部分),这样Panel会自动以父节点中心为基准适配尺寸。
内容的提问来源于stack exchange,提问作者Ian McCurdy
相关产品推荐
相关产品推荐

