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

Godot 4全屏模式元素居中异常,窗口化后正常求助

解决Godot 4全屏模式下元素不居中的问题

以下是几个针对性的修复方案,按优先级尝试:

1. 启动时强制触发布局更新

在主场景根节点(如Node2D或Control)的_ready()函数中添加代码,确保窗口完成全屏初始化后再刷新布局:

func _ready():
    await get_tree().process_frame
    if is_class("Control"):
        force_update_transform()
    else:
        rect_position = get_viewport_rect().size/2 - rect_size/2

2. 核对项目窗口配置

打开项目设置 > 显示 > 窗口,确认以下设置:

  • 窗口模式设为全屏或窗口化全屏
  • 调整大小模式勾选保持宽高比或拉伸(按需选择)
  • 内容缩放 > 拉伸模式推荐设为保持宽高比,避免元素变形

3. 监听窗口尺寸变化信号

给主Viewport添加size_changed信号,每次窗口尺寸变动(包括启动全屏)时重新计算元素位置:

  1. 选中主场景的Viewport节点,在信号面板找到size_changed并连接到根节点
  2. 实现处理函数:
func _on_viewport_size_changed():
    if is_class("Control"):
        anchor_left = 0.5
        anchor_right = 0.5
        anchor_top = 0.5
        anchor_bottom = 0.5
        rect_position = Vector2.ZERO
    else:
        rect_position = get_viewport_rect().center - rect_size/2

4. 检查元素锚点与对齐设置

  • 若使用Control类节点:确保锚点设为(0.5, 0.5)、偏移设为(0, 0),不要手动固定rect_position
  • 若使用Node2D节点:放弃固定坐标,在_process()中动态计算位置:
func _process(delta):
    rect_position = get_viewport_rect().center - rect_size/2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:20:04