Unity3D在最新版本中具有本地多顯示器支持。 API文檔表明,這與將每個顯示器連接到相機視圖相關聯。 是否有可能將顯示映射到場景?因此,具有兩個監視器的用戶可以在其中一個監視器上顯示兩個不同的場景? 如果可能的話,會怎麼做呢?Unity3D:在多個顯示器上顯示不同的場景
回答
在多臺顯示器上顯示不同的場景?
否,你不能。
在多臺顯示器上顯示來自同一場景的不同攝像機?
是的!與Display類。
事實是,你不能同時運行兩個不同的場景。你不能。
但是,您可以使用Application.LoadLevelAdditive
(作廢)或SceneManager.LoadScene("sceneName",LoadSceneMode.Additive);
擴展當前場景,這與您要求的內容無關。
你可以做什麼:
位置多臺攝像機在不同的地方在的,相同的場景然後渲染每個攝像機不同的顯示。
最大支持的顯示器是。
您可以使用Display.displays.Length
檢查連接的顯示器數量。
Display.displays[0]
是主/主顯示器。
Display.displays[1]
下一頁顯示
Display.displays[2]
下一頁顯示
Display.displays[3]
另一個下一頁顯示
呼叫激活功能,以激活顯示。
Display.displays[1].Activate();
激活顯示器時,還可以提供寬度,高度和刷新率。 (僅適用於Windows)
int width, height, refreshRate;
width = Screen.width;
height = Screen.height;
refreshRate = 120;
Display.displays[1].Activate(width, height, refreshRate);
之前您激活顯示器,確保顯示的索引設置爲一個攝像頭。
MyOtherCamera.targetDisplay = 1;
//使MyOtherCamera顯示在第二個顯示器上。您現在可以調用激活功能。
假設我們有4個攝像頭和4個顯示屏,並且我們希望在每個顯示屏上顯示每個攝像頭。
Camera[] myCams = new Camera[4];
void Start()
{
//Get Main Camera
myCams[0] = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();
//Find All other Cameras
myCams[1] = GameObject.Find("Camera2").GetComponent<Camera>();
myCams[2] = GameObject.Find("Camera3").GetComponent<Camera>();
myCams[3] = GameObject.Find("Camera4").GetComponent<Camera>();
//Call function when new display is connected
Display.onDisplaysUpdated += OnDisplaysUpdated;
//Map each Camera to a Display
mapCameraToDisplay();
}
void mapCameraToDisplay()
{
//Loop over Connected Displays
for (int i = 0; i < Display.displays.Length; i++)
{
myCams[i].targetDisplay = i; //Set the Display in which to render the camera to
Display.displays[i].Activate(); //Enable the display
}
}
void OnDisplaysUpdated()
{
Debug.Log("New Display Connected. Show Display Option Menu....");
}
是否可以使用連接到相機對象的相機組件中的目標顯示激活顯示? – Hamid
我真的不明白你的問題,但你必須將顯示號碼分配給相機的目標('Camera.targetDisplay'),然後調用'Display.display [index] .Activate()'使相機的圖像顯示在監控。我在答案中討論了所有這些。 – Programmer
相同的解決方案here:
多顯示器
多顯示器可以讓你在同一時間最多可顯示多達8個不同的監控8個不同的攝像機視圖您的應用程序。您可以將其用於PC遊戲,街機遊戲機和簡單的公共顯示裝置。
多顯示器只能在獨立模式下運行,並且在Windows,Mac OS X和Linux上受支持。在您的項目
預覽多顯示器要查看不同顯示器顯示:
設置每個攝像頭顯示某個監視器,使用它的督察。您可以通過目標顯示選項在1到8個顯示器之間進行分配(參見圖1)。
圖1:相機督察與目標顯示選項
圖1:相機督察與目標顯示選項 然後,您可以預覽在遊戲中查看每個顯示,使用下拉顯示菜單該視圖的左上角(見圖2)。
圖2:在遊戲顯示的左上角顯示預覽
圖2:在遊戲顯示的左上角顯示預覽 激活多顯示器
默認顯示是一個監視器,因此當您運行應用程序時,您需要使用Display.Activate通過腳本顯式激活任何其他顯示。您需要明確激活每個附加顯示,並且一旦激活,您就不能停用它們。
激活附加顯示的最佳時間是在創建新場景時。這樣做的一個好方法是將腳本組件添加到默認Camera。確保在啓動期間只調用一次Display.Activate。您可能會發現創建一個小的初始場景來測試它會很有幫助。
例腳本
using UnityEngine;
using System.Collections;
public class DisplayScript : MonoBehaviour
{
// Use this for initialization
void Start()
{
Debug.Log("displays connected: " + Display.displays.Length);
// Display.displays[0] is the primary, default display and is always ON.
// Check if additional displays are available and activate each.
if (Display.displays.Length > 1)
Display.displays[1].Activate();
if (Display.displays.Length > 2)
Display.displays[2].Activate();
...
}
// Update is called once per frame
void Update()
{
}
}
API支持
以下UnityEngine.Display API函數的支持:
public void Activate()
這激活所述電流監控器的寬度和高度的特定顯示。在開始新場景時必須進行一次該調用。它可以從連接到相機的用戶腳本或新場景中的虛擬遊戲對象中調用。
public void Activate(int width, int height, int refreshRate)
僅限Windows:激活自定義顯示器的寬度和高度的特定顯示。
除了其他答案,如果您確實想在另一臺顯示器上顯示不同場景,則可以確保該場景中的所有內容都位於特定圖層上。然後在該場景中的相機上設置cullingmask僅渲染該圖層,並在主攝像機上排除該圖層。 然後就像上面提到的那樣加載場景。
這基本上是Unity的預覽器的工作原理(儘管它不是實例化隱藏的預製件的場景)。
- 1. Unity3D多顯示器關閉一個顯示器
- 2. 遊戲場景不顯示
- 3. JavaFX顯示器場景背景圖像
- 4. 如何在屏幕上同時顯示2個場景
- 5. 用QGraphics場景顯示圖像場景
- 6. 隱藏和顯示不同場景的導航器
- 7. SKNodes不在場景中顯示
- 8. 按鈕在多個顯示器上顯示不正確
- 9. 顯示不同級別的不同場景。 AndEngine
- 10. GUI顯示場景圖
- 11. 如何在不同的時間隱藏/顯示多個廣場
- 12. TextView在不同的顯示器上
- 13. 在iOS上顯示背景但在Android上不顯示Xamarin
- 14. 在顯示器上同步
- 15. 在Chrome瀏覽器中顯示CSS多個背景,但不顯示IE或Firefox
- 16. 如何在多顯示器設置中的不同顯示器上同時播放不同的視頻?
- 17. Swing組件在不同的顯示器上顯示出不同的結果
- 18. 如何使用OpenCV在不同的顯示器上顯示不同的窗口
- 19. 如何在顯示多個場景/節點時不打開多個階段
- 20. Sharepoint:如何在交叉發佈場景中的顯示模板上顯示AppendOnlyHistory
- 21. react-navigation,調度動作改變場景 - 場景不顯示
- 22. 用JavaFX顯示另一個場景[場景圖形問題]
- 23. 克隆顯示在多個顯示器上
- 24. 使用XNA在多個顯示器上全屏顯示
- 25. 不能在操場上顯示視圖
- 26. Three.js:在場景中間顯示對象
- 27. 如何在場景中顯示文本?
- 28. 如何管理單場顯示的單場顯示的兩種不同視圖?
- 29. 顯示在一個場
- 30. 不同畫布上的多個場景
你想在同一時間顯示這兩個場景或一次只顯示一個? – Programmer
與此同時。我特別感興趣的是嘗試編寫Kerbal Space Program的Mod,以使用新的Unity多監視器支持,允許用戶在主屏幕上顯示飛行視圖時,在輔助屏幕上顯示mapview或IVA視圖。 – silentcoder