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

Unity多显示器场景中Editor运行模式下无法点击Display 2按钮的问题

解决方案

1. 开启编辑器多显示器输入支持

Unity编辑器默认仅监听主显示器输入,需手动开启多显示器输入权限:

  • 打开 Edit > Project Settings > Player
  • 在 Resolution and Presentation 面板下,勾选 Allow Multi Display Input 选项
  • 重启编辑器使设置生效

2. 绑定Canvas到对应事件相机

UI交互依赖相机的事件捕获,必须确保每个Canvas与对应显示器的相机绑定:

  • 选中目标Canvas,在Inspector面板找到 Event Camera 属性
  • 将其设置为对应目标显示器的相机(比如Display2的Canvas绑定Camera2)
  • 若Canvas为Screen Space - Overlay模式,需确认相机的Target Display与Canvas一致,且相机处于激活状态

3. 保证切换逻辑的执行时机

CameraChange方法需要在每一帧更新中调用,否则按键检测不会触发:

void Update()
{
    CameraChange();
}

private void CameraChange()
{
    if (Input.GetKeyUp(KeyCode.Escape))
    {
        isChanged = !isChanged;
        if (isChanged)
        {
            Camera1.targetDisplay = 1;
            Camera2.targetDisplay = 0;
            Canvas1.targetDisplay = 1;
            Canvas2.targetDisplay = 0;
        }
        else
        {
            Camera1.targetDisplay = 0;
            Camera2.targetDisplay = 1;
            Canvas1.targetDisplay = 0;
            Canvas2.targetDisplay = 1;
        }
    }
}

4. 延迟激活多显示器(编辑器专属)

编辑器多显示器初始化可能慢于代码执行,用协程延迟激活:

IEnumerator Start()
{
    // 延迟2帧确保编辑器完成多显示器初始化
    yield return new WaitForEndOfFrame();
    yield return new WaitForEndOfFrame();

    for (int i = 1; i < Display.displays.Length; i++) 
    {
        Display.displays[i].Activate(); 
    }
}

5. 检查相机深度与渲染顺序

确保两个相机的Depth值不同,避免遮挡UI渲染:

  • 例如将Camera1的Depth设为0,Camera2设为1,保证各自UI能正确显示在对应显示器上

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:40:15