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
相关产品推荐
相关产品推荐

