最近有一個需求需要完成的。在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了。