Unity 多屏(分屏)显示,Muti_Display
Unity 多屏(分屏)顯示,Muti_Display
最近項目有個需求,主要用于在展廳的展示游戲。
比如,在一個很大的展廳,很大的顯示屏掛在墻上,我們不可能通過操作墻上那塊顯示器上的按鈕來控制游戲。
這時候有一個小的顯示器(比如一個控制器或者一個手機)
我們要做的是:掛在墻上的大顯示器用來展示3D游戲場景,而所有的UI控制則全部顯示在“控制器“上。
這在Unity里面應該怎樣實現:
1.先看Unity官方文檔
https://docs.unity3d.com/Manual/MultiDisplay.html
有這么一個Muti-Display
Muti-display允許最多8geCamera視圖,最多8個不同的顯示器顯示。可用于PC端游戲,拱屏設備(跟環屏設備一個意思,我猜多),和一些公用的展示設備。其實就一個意思:
也就是只支持PC端。
2.接下來就是一些設置
Set eachCamerato display to a specific monitor, using itsInspector. You can assign between 1 and 8 display monitors via theTarget Displayoption (seeFig. 1).
對每一個相機進行單獨設置顯示在指定的顯示器上,通過Camera的屬性Inspector窗口,你可以通過 Target Display下拉列表來指定1到8的任意顯示器。
You can then preview each display in the Game View, using the drop-downDisplaymenu in the top left-hand corner of the view (seeFig. 2).
通過Game視圖左上角的Display1下來菜單可以選擇你要預覽的視圖。
note:如果你想要同時預覽兩個Game視圖,在任意標簽 右鍵->Add Tap ->Game,在新的Game視圖設置Display2。
3.最后就是激活了。
The default display is one monitor, so when you run your application, you need to explicitly activate any additional displays via scripting, usingDisplay.Activate. You need to explicitly activate each additional display and, once activated, you cannot deactivate them.
默認情況下,只有一個顯示器,所以當你運行程序的時候,你需要明確地激活額外的顯示器,可以通過代碼 Display.Activate來實現,需要注意的是,只需要激活一次,一旦激活了,就不能關閉激活狀態。
4.請看官方代碼。很簡單,這里說一點需要注意的就是 Display.displays.Length這個屬性,在Editor下,無論你的主機連接了多少個顯示器,Display.displays.Length的值都是1。只有打包運行的時候,返回值才是真的連接的顯示器個數(當然如果你想測試一下不連顯示器看看返回值是多少,你試試,如果有結果記得回來評論,哈哈哈)
簡單介紹這么多,說說怎么操作吧。我的Sample是 左邊顯示器顯示一個button,點擊button在右邊顯示器上創建一個Cube.
1.新建項目,新建Scene,默認的即可。在MainCamera的屬性窗口 找到TargetDisplay,默認值是Display1,那就讓它默認值好了。這個MainCamera主要是用于渲染3D場景的,也就是本Sample中的 “右邊顯示器”。
2.新建一個Camera 命名為UICamera,在屬性窗口,Camera下需要設置兩個地方:a.CullingMask,不用多解釋了,這里只渲染UI界面,b.TargetDisplay 設置為Display2.
3.創建Button按鈕,我這里用的UGUI(新版本的UGUI個人覺得已經很完美了,果斷拋棄了NGUI,要做圖集,麻煩),UGUI自然會有一個Canvas,是的,Canvas下也有一個TargetDisplay屬性,將它設置為Display2,因為我只想讓UI在“左邊顯示器”上顯示。
到目前,一切基本就緒了,這時候在Game視圖的左上角切換Display1和Display2會看到Display2只有一個Button,切換到Display1時什么都沒有(因為MainCamera渲染的場景中什么都沒有)。
4.代碼。
首先是激活顯示器,像上邊翻譯的一樣,然后是點擊按鈕創建Cube,都是很簡單的代碼。
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
// Use this for initialization
void Start () {
Debug.Log("displays connected: " + Display.displays.Length);
// Display.displays[0] 是主顯示器, 默認顯示并始終在主顯示器上顯示.
// 檢查其他顯示器是否可用并激活.
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 () {
}
}
最后就是打包發布了。
看下效果吧
按鈕在左邊顯示器
總結
以上是生活随笔為你收集整理的Unity 多屏(分屏)显示,Muti_Display的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP Spartacus Tag Ma
- 下一篇: 使用 ABAP 代码向百度网站发起请求并