1. 程式人生 > >Unity之在UI介面上顯示3D模型

Unity之在UI介面上顯示3D模型

1、建立一個3D攝像機,渲染3D模型。(我為了方便就把模型放到了Camera的下面,你可以不這樣)


2、在2D裡面指定一個TopLeft和BottomRight,用來表示模型渲染到UI上面的區域


3、在之前的3D攝像機上掛上UIViewPort指令碼,幾個變數如圖所示。


4、結果就是這樣。


需要注意的地方:

1、3D攝像機的depth要大於2D攝像機的depth

2、3D攝像機的Clear Flags需要設定為Depth Only或者Dont Clear

  我們在mmo中通常會有在GUI上面顯示一個3D模型的需求,比如檢視人物裝備的介面。我網上搜索了下,搜到的結果都是直接繫結一個模型到UI的指定位置,最多新增一個攝像機以便控制2d渲染和3d模型渲染的先後層次關係。NGUI和Daikon Forge的Demo中也是這麼做的。這麼做比較直接簡單,通過一個新的攝像機並指定渲染內容和層級確實也可以一定程度上解決模型和GUI的遮擋問題。但是這個方法並不完善,如果介面一多,想讓模型和ui契合起來是一件不可能完成的任務。

       我的方法是使用RenderTexture。即建立一個RenderTexture(具體方法網上很輕易的可以搜尋到),建立一個攝像機指定其繪製目標是RenderTexture,這樣攝像機渲染的內容都會繪製到這張RenderTexture上面。我們可以把這張RenderTexture當作普通紋理賦給ui,比如我使用Daikon Forge,所以就可以建立一個dfTextureSprite,然後設定其Texture屬性的值為renderTexture。

       當我們開啟檢視人物裝備的介面的時候,我們建立一個人物模型並指定新的camera的位置(調整下座標以便可以正常的顯示出來),這樣一個3d模型就可以顯示在我們的ui上面。並且當開啟一個新的介面(比如裝備Tip介面),3d模型也會老老實實的呆在後面,而不會穿幫顯示在最前面。

       同樣的方法,我在預覽技能效果介面裡面也是如此處理的,一個場景就出現在一個小視窗中。