unity 双屏,多屏幕显示

在项目实践中遇到多屏幕展示需求 ,我们可以通过

新建 scence ,新建 camera

给camera 的 targetDisplay 选择 为 display2 其中默认为display1 (如图)

然后在初始化中添加开启代码

 //循环遍历存在的所有屏幕
        for (int i = 0; i < Display.displays.Length; i++)
        {
            //开启存在的屏幕显示,激活显示器
            Display.displays[i].Activate();
            Screen.SetResolution(Display.displays[i].renderingWidth, Display.displays[i].renderingHeight, true);
        }

到现在在场景中添加新的 game视图

然后选择display2 ,当前即为刚刚新建camea 的视图 ,可以新建cude 等测试


关于添加UI部分

新建canvas ,在canvas中选择 targetDisplay2 ,那么当前的 canvas 的渲染在 刚刚新建camera 的 屏幕2 上

然后 多个canvas 的渲染先后 由 sortorder 来决定 所以可以通过设置sortorder来进行 ui互动

unity 现在支持同时8屏幕显示

关于其中一些坑点

  1. 如果代码开启多屏幕的情况下是 关闭不了的 ,就好比你有多个场景 ,只有这一个场景需要多屏幕,其他场景 不需要,那不好意思,只要一旦开启就不能关闭

  1. 多个camera 处理的时候 多重渲染 场景 ,会增加负担

  1. 鼠标,ui 事件 的处理 主要是 canvas 的渲染顺序 等

多屏幕识别 (当前鼠标在哪个屏幕活跃)

 int number = (int)Mathf.Floor(Mathf.Abs(Input.mousePosition.x) / (float)SceneWidth);

仅在多个屏幕分别率一样的情况下适用 ,SceneWidth 为屏幕分别率Screen.width ,打包适用

(可以用于自动识别屏幕几来开启当前屏幕对应的UI事件等)

🌞其他待开发中 ,有大佬有更好的方法求留下一起讨论下

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>