最近有一个需求需要完成的。在Unity中做一个软件驱动两块会移动的显示器进行仿真展示。
为了方便还是把所有的内容都放在一个场景里边展示,并且只使用一台电脑。这样就不要两台电脑进行通信了。
需要设置多块屏幕显示,首先只需要在场景里放置多个摄像机。
然后为每个相机选择目标显示器,也就是说这个相机渲染的画面会被放到对应的显示器上。
选好之后我们可以增加一个Game视图,来大概的看一下我们的多屏显示。点击如图所示的按钮。AddTab–>Game。
之后把Game试图放在一起我们就可以看到如下图的样子。
上面我们就完成了第一步,多块屏幕显示不同的内容。然后我们需要分别为每一块屏幕设置分辨率来达到正确的显示效果。首先我们需要关闭Unity启动时候的选择分辨率窗口。把BuildSettings/PlayerSettings/ResolutionandPresentation下的Display Resolution Dialog设置为Disabled。这样我们就可以自己进行设置了。
之后就在代码里对每一块显示器进行设置。这里有一个API是Display.displays可以给我们返回一个display的数组。我们可以打开对应的显示器,然后设置正确的分辨率。代码如下所示。我要设置屏幕分辨率为1080*1920.所以对两块屏幕分别进行了设置。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DoubleScreendisplay : MonoBehaviour
{
public Text inforText;
void Awake()
{
Display.displays[0].Activate();
Display.displays[0].SetRenderingResolution(1080, 1920);
inforText.text = "display1 width:" + Display.displays[0].renderingWidth + "display1 heigh:" + Display.displays[0].renderingHeight;
Display.displays[1].Activate();
Display.displays[1].SetRenderingResolution(1080, 1920);
inforText.text += "display2 width:" + Display.displays[1].renderingWidth + "display2 heigh:" + Display.displays[1].renderingHeight;
}
private void Start()
{
}
}
值得注意的是,这里在编译器下运行是会报错的,可能没打包都不到所有的设备。打包之后进行测试就OK了。