張福峰 王敏 金會(huì)賞
摘要:虛擬現(xiàn)實(shí)技術(shù)的蓬勃發(fā)展為各產(chǎn)業(yè)注入新活力,房地產(chǎn)、汽車等行業(yè)虛擬現(xiàn)實(shí)的運(yùn)用,讓用戶足不出戶盡情領(lǐng)略虛擬現(xiàn)實(shí)的魅力。Unity3D是虛擬現(xiàn)實(shí)開發(fā)的利器,介紹在Unity3D中結(jié)合UGUI組件實(shí)現(xiàn)場(chǎng)景材質(zhì)動(dòng)態(tài)修改的方法。
關(guān)鍵詞:Unity3D;UGUI;動(dòng)態(tài)材質(zhì)
中圖分類號(hào):TP37 ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)25-0218-02
Abstract: The vigorous development of virtual reality technology injects new vitality into various industries. The application of virtual reality in real estate, automobile, and other industries enables users to enjoy the charm of virtual reality at home. Unity3D is a powerful tool for virtual reality development. This paper introduces the method of dynamic modification of scene materials in Unity3D with the UGUI component.
Key words: Unity3D; UGUI; Dynamic material
隨著VR(虛擬現(xiàn)實(shí))技術(shù)的日新月異,多家網(wǎng)站推出了基于VR的虛擬看車、看房。用戶足不出戶就能360度全方位看到車輛、房間全貌,并能自由切換場(chǎng)景對(duì)象材質(zhì)、顏色。在Unity3D軟件中,可以借助Shader(著色器)輕松實(shí)現(xiàn)材質(zhì)貼圖的動(dòng)態(tài)設(shè)置。Shader所做的就是將一個(gè)模型的網(wǎng)格渲染到屏幕上,它可以被定義為一系列的屬性,你可以通過改變這些屬性來改變模型渲染到屏幕上的效果,而這些屬性被存放在一個(gè)叫作材質(zhì)(material)的地方。另外,對(duì)于3D游戲來說,有很多絢麗的效果也都是靠Shader來實(shí)現(xiàn)的。
1GUI框架
GUI(Graphical User Interface)在游戲的開發(fā)中占有極其重要的地位,GUI界面友好、使用是否方便很大程度上決定了玩家的游戲體驗(yàn)。Unity3D內(nèi)置了一套完整地GUI系統(tǒng),提供了從布局、控件到皮膚的一整套GUI解決方案,可以做出各種風(fēng)格和樣式的GUI界面。Unity 4.6以前沒有提供內(nèi)置的GUI可視化編輯器,因此GUI界面的制作需要全部通過編寫腳本代碼來實(shí)現(xiàn),或者借助第三方的GUI插件,如NGUI。NGUI是專門針對(duì)Unity引擎、用C#語言編寫的一套插件,是一款老牌的Unity UI插件。NGUI完美地彌補(bǔ)了Unity引擎原生GUI系統(tǒng)的各種不足,提供了常見的UI控件,實(shí)現(xiàn)幾乎所有需要的功能。
UGUI是NGUI作者參與開發(fā)的,由Unity官方推出的一套UI組件,從Unity4.6開始被集成到Unity編譯器中的。UGUI相對(duì)于之前的GUI來說改頭換面,靈活、快速和可視化是Unity官方給UGUI系統(tǒng)賦予的標(biāo)簽。UGUI由于是Unity原生支持的,所以使用上會(huì)更加人性化,對(duì)于開發(fā)者而言有三個(gè)優(yōu)點(diǎn):效率高效果好、易于使用和擴(kuò)展以及與Unity的兼容性高。
2 UGUI基本控件
Unity用戶界面系統(tǒng)用于快速直觀地創(chuàng)建游戲內(nèi)用戶界面,使用一些包含的組件(如面板和按鈕),可以為應(yīng)用程序創(chuàng)建基本主菜單。UGUI主要包括畫布、文本、圖像、原始圖像、按鈕等基本控件。
畫布是所有UI控件的根類,也可以看作所有UI控件的父物體,所有UI控件都必須在Canvas上面繪制;Text 控件也稱為標(biāo)簽,Text 區(qū)域用于輸入將顯示的文本,它可以設(shè)置字體、樣式、字號(hào)等內(nèi)容;圖像控件除了兩個(gè)公共的組件(矩形變換與畫布渲染器)外,默認(rèn)情況下就只有一個(gè) Image 組件,把圖片轉(zhuǎn)換成精靈(Sprite)格式后,精靈圖片就可以拖放到 Image 的源圖像中顯示該圖像了;原始圖像控件與圖像控件類似,但是原始圖像控件可以顯示任何紋理,向用戶顯示了一個(gè)非交互式的圖像,它可以用于裝飾、圖標(biāo)等;按鈕是一個(gè)復(fù)合控件,其中還包含一個(gè)文本子控件,通過此子控件可設(shè)置按鈕上顯示的文字內(nèi)容、字體、文字樣式、文字大小、顏色等,與前面所講的 Text 控件是一樣的。
3 綁定鼠標(biāo)單擊事件
要在Unity3D中綁定按鈕單擊事件,可以在檢查器窗口將單擊事件腳本掛接到按鈕組件,也可以在腳本文件中通過代碼綁定鼠標(biāo)單擊事件。在腳本中綁定鼠標(biāo)事件更具靈活性,下面簡要介紹:
首先,創(chuàng)建一個(gè)C#腳本命名為mClickA.cs。獲取名稱為Button按鈕后,為按鈕綁定onClick事件,其中,ClickmeA為無參方法,ClickmeB為傳參方法,根據(jù)實(shí)際情況選擇合適方法即可。腳本完成后掛接到按鈕或者場(chǎng)景其他任何對(duì)象均可。
public class mClickA : MonoBehaviour {
privateGameObjectbtnObj;
private void Start()
{
btnObj = GameObject.Find("Button");
btnObj.GetComponent