如何配置Godot实现双屏双窗口运行?适配触屏与4K屏场景
Godot双屏(触屏输入+4K显示)配置方案
方案一:多独立窗口实现(推荐)
直接创建两个独立窗口,分别绑定触屏和4K屏幕,各自负责输入和显示。
1. 开启多窗口支持
打开项目设置,导航到Display > Window > Multi-Window,勾选Allow Multiple Windows选项,允许项目创建多个窗口。
2. 代码创建并配置副屏窗口
在主场景的脚本中(比如主节点的_ready()函数),添加以下代码创建并配置第二窗口:
extends Node2D var secondary_window: Window func _ready(): # 初始化副屏窗口 secondary_window = Window.new() secondary_window.title = "4K结果显示窗口" # 指定窗口绑定到第二块屏幕(屏幕索引从0开始,主触屏为0,副屏为1) # 可通过DisplayServer.get_screen_count()获取屏幕总数,避免硬编码 secondary_window.screen = 1 # 设置副屏窗口为全屏(或指定4K分辨率) secondary_window.fullscreen = true # 若不需要全屏,可手动设置尺寸:secondary_window.size = Vector2(3840, 2160) # 创建副屏窗口的根Viewport var secondary_viewport = Viewport.new() secondary_viewport.size = secondary_window.size secondary_window.add_child(secondary_viewport) # 加载并实例化副屏显示场景(替换为你的结果显示场景路径) var display_scene = load("res://ResultDisplay.tscn").instance() secondary_viewport.add_child(display_scene) # 显示副屏窗口 secondary_window.visible = true
- 主窗口默认绑定主触屏屏幕,直接在主场景中开发输入界面即可,输入事件会被主窗口自动接收。
- 若需要区分输入来源,可通过
InputEvent的window属性判断事件来自哪个窗口。
方案二:单窗口跨双屏+双Viewport(备选方案)
强制窗口覆盖双屏,通过两个Viewport分别渲染输入界面和结果内容。
1. 配置跨屏窗口
- 打开项目设置,进入
Display > Window > Size,设置Window Size为双屏总分辨率(例如触屏1920x1080 + 4K屏3840x2160,总尺寸设为5760x2160)。 - 勾选
Fullscreen选项,或在代码中强制全屏跨屏:
func _ready(): # 设置窗口尺寸为双屏总分辨率 get_tree().root.size = Vector2(5760, 2160) # 让窗口跨所有屏幕显示 get_tree().root.window.screen = -1 get_tree().root.window.fullscreen = true
2. 创建双Viewport与Camera
在主场景中添加两个Viewport节点,分别对应输入和显示区域:
- InputViewport:设置尺寸为触屏分辨率(如1920x1080),位置设为
(0, 0),加载输入界面场景作为其子节点,并添加Camera2D(或Camera3D)节点绑定该Viewport。 - DisplayViewport:设置尺寸为4K分辨率(3840x2160),位置设为
(1920, 0),加载结果显示场景作为其子节点,同样添加对应Camera节点。
3. 输入事件映射
如果需要精准处理触屏输入,可通过以下方式将全局坐标映射到InputViewport的局部坐标:
func _input(event: InputEvent): if event is InputEventScreenTouch or event is InputEventScreenDrag: var local_pos = $InputViewport.get_canvas_transform().affine_inverse() * event.position # 将local_pos传递给输入界面的交互逻辑
注意事项
- 屏幕索引和分辨率可通过
DisplayServerAPI动态获取:DisplayServer.get_screen_size(screen_idx)、DisplayServer.get_screen_count(),避免硬编码适配不同硬件。 - 打包导出时,多窗口方案需在导出设置中确认
Allow Multiple Windows已勾选;单窗口方案需设置正确的窗口尺寸。
内容的提问来源于stack exchange,提问作者Stephane Rainville
相关产品推荐
相关产品推荐

