Unity開啟篇(十七) —— Unity UI簡介(四)

版本記錄

版本號 時間
V1.0 2019.01.28 星期一

前言

Unity是由Unity Technologies開發(fā)的一個讓玩家輕松創(chuàng)建諸如三維視頻游戲拱礁、建筑可視化嘹锁、實時三維動畫等類型互動內(nèi)容的多平臺的綜合型游戲開發(fā)工具豌注,是一個全面整合的專業(yè)游戲引擎妙真。Unity類似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的圖型化開發(fā)環(huán)境為首要方式的軟件蝠嘉。其編輯器運行在Windows 和Mac OS X下最疆,可發(fā)布游戲至WindowsMac是晨、Wii肚菠、iPhoneWebGL(需要HTML5)罩缴、Windows phone 8和Android平臺蚊逢。也可以利用Unity web player插件發(fā)布網(wǎng)頁游戲,支持Mac和Windows的網(wǎng)頁瀏覽箫章。它的網(wǎng)頁播放器也被Mac 所支持烙荷。網(wǎng)頁游戲 坦克英雄和手機(jī)游戲王者榮耀都是基于它的開發(fā)。
下面我們就一起開啟Unity之旅檬寂。感興趣的看下面幾篇文章终抽。
1. Unity開啟篇(一) —— Unity界面及創(chuàng)建第一個簡單的游戲 (一)
2. Unity開啟篇(二) —— Unity界面及創(chuàng)建第一個簡單的游戲 (二)
3. Unity開啟篇(三) —— 一款簡單射擊游戲示例 (一)
4. Unity開啟篇(四) —— 一款簡單射擊游戲示例 (二)
5. Unity開啟篇(五) —— 一款簡單射擊游戲示例 (三)
6. Unity開啟篇(六) —— Unity動畫簡介 (一)
7. Unity開啟篇(七) —— Unity動畫簡介 (二)
8. Unity開啟篇(八) —— Unity聲音簡介(一)
9. Unity開啟篇(九) —— Unity聲音簡介(二)
10. Unity開啟篇(十) —— Unity粒子系統(tǒng)簡介(一)
11. Unity開啟篇(十一) —— Unity粒子系統(tǒng)簡介(二)
12. Unity開啟篇(十二) —— Unity腳本簡介(一)
13. Unity開啟篇(十三) —— Unity腳本簡介(二)
14. Unity開啟篇(十四) —— Unity UI簡介(一)
15. Unity開啟篇(十五) —— Unity UI簡介(二)
16. Unity開啟篇(十六) —— Unity UI簡介(三)

Displaying Dialog on Button Click

禁用Animator組件,以便通過將isHidden的默認(rèn)值設(shè)置為true桶至,它不會在開始時播放動畫昼伴。 單擊Animator窗口中的一些空白區(qū)域,然后將isHidden設(shè)置為true

當(dāng)您現(xiàn)在運行場景時镣屹,對話框不會立即顯示 - 這很好 - 但是圃郊,即使單擊設(shè)置按鈕也不會顯示。 這個不好女蜈。

打開UIManagerScript并添加以下實例變量:

public Animator dialog;

然后將以下代碼添加到OpenSettings的末尾:

public void OpenSettings() 
{
    //..skipped..

    dialog.SetBool("isHidden", false);
}

這將啟用Animator組件并為isHidden參數(shù)設(shè)置正確的值持舆。

最后添加一個名為CloseSettings的新方法,如下所示:

public void CloseSettings() 
{
    startButton.SetBool("isHidden", false);
    settingsButton.SetBool("isHidden", false);
    dialog.SetBool("isHidden", true);
}

這將返回按鈕并隱藏對話框伪窖。 您將立即添加調(diào)用此方法的UI元素逸寓。

保存UIManagerScript并切換回Unity編輯器。

Hierarchy中選擇UIManager覆山,然后將Dlg_Settings拖到Inspector中的Dialog字段中竹伸。

運行場景,然后單擊Settings按鈕汹买,查看對話框滑入時按鈕如何滑出佩伤。

那更好聊倔,但你無法關(guān)閉對話框。

要解決此問題生巡,您需要在對話框中添加某種關(guān)閉按鈕耙蔑。


Adding the Close Button

選擇GameObject \ UI \ Button以創(chuàng)建按鈕。 將此新按鈕重命名為Btn_Close并將其拖動到層次結(jié)構(gòu)中的Dlg_Settings上孤荣,以將其添加為子對象甸陌。 此外,此按鈕上沒有文本盐股,因此刪除嵌套在Btn_Close中的Text對象钱豁。

這是您在層次結(jié)構(gòu)中應(yīng)該具有的內(nèi)容:

現(xiàn)在選擇Btn_Close并按照以下步驟操作:

  • 1) 將錨點設(shè)置為top-right
  • 2) 將Pos XPos Y都設(shè)置為0疯汁。
  • 3) 在“項目”窗口中打開Menu文件夾牲尺,然后將settings_btn_close拖到“檢查器”中的Source Image字段中。
  • 4) 單擊Set Native Size幌蚊。

這是對話框現(xiàn)在在Scene視圖中的外觀:

注意:這次谤碳,您將使用另一種方法突出顯示按鈕的圖像(Button腳本中的Transition屬性),稱為ColorTint溢豆,這是默認(rèn)的過渡類型蜒简。 您將執(zhí)行此操作,而不是添加另外兩個圖像來表示突出顯示和按下的按鈕狀態(tài)漩仙。

按鈕看起來很棒搓茬,但它什么也沒做。 幸運的是队他,您已經(jīng)添加了此按鈕需要調(diào)用的方法卷仑。

在Hierarchy中選擇Btn_Close,向下滾動到On Click()列表并單擊+麸折。 將UIManager從Hierarchy拖動到新項目系枪,然后在下拉列表中選擇UIManagerScript \ CloseSettings()方法。

選擇File / Save Scenes以保存到目前為止的工作磕谅,然后Run the scene。 單擊Settings按鈕雾棺,在對話框滑入場景后單擊Close關(guān)閉場景膊夹。

嘿,你做得很好捌浩。 那看起來不錯放刨!


Adding Sound Settings

保持無意義的設(shè)置對話框沒有多大意義,因此尸饺,是時候向它添加一些實際設(shè)置了进统。 在此對話框中助币,player將控制菜單場景中音樂的音量。

音樂螟碎? 是的眉菱,沒有音樂的游戲有什么樂趣?

1. Adding Music to the Menu Scene

您可以在文件周圍搜索合適的剪輯掉分,但是您不必這樣做俭缓,因為該項目已包含一個活潑的音樂曲目。 你需要做的就是播放它酥郭。

在層次結(jié)構(gòu)中選擇Main Camera华坦,然后添加Audio Source組件。 然后不从,在Project window窗口中惜姐,打開Audio文件夾并將音樂拖動到“檢查器”中的Audio Clip字段。

啟用Play On Awake椿息。

2. Toggling Music On and Off

要打開和關(guān)閉音樂歹袁,您將使用切換控制。 選擇GameObject \ UI \ Toggle將切換UI元素添加到場景中撵颊。

切換控件由附加了Toggle腳本的根對象和幾個子對象組成:

  • Background:始終可見的圖像(即處于打開和關(guān)閉狀態(tài))
  • Checkmark:僅在切換激活(ON)時可見的圖像宇攻。
  • Label:切換旁邊顯示的標(biāo)簽。

這次您不需要標(biāo)簽倡勇,因此請刪除嵌套的Label逞刷。 然后重命名切換到Tgl_Sound并將其拖到Dlg_Settings上以將其放入對話框中。 這是您在完成后應(yīng)在層次結(jié)構(gòu)中看到的內(nèi)容:

在層次結(jié)構(gòu)中選擇Tgl_Sound妻熊。 將其錨點設(shè)置為middle-left夸浅,Pos X設(shè)置為115,Pos Y設(shè)置為-10扔役。

注意:還記得如何相對于父級設(shè)置錨點和位置嗎帆喇? 這就是為什么首先將tgl_sound添加為dlg_settings的子元素并且僅在設(shè)置其位置之后才重要。

請記住亿胸,更改錨點和樞軸不會更改UI元素位置坯钦,而是將位置字段(例如Pos X,Pos Y侈玄,Left婉刀,Right)更新為通過使用新錨點和pivot將元素定位在同一位置的值。 首先設(shè)置它們序仙,然后使用它們來設(shè)置正確的位置突颊。

此外,在Toggle(Script)組件下,取消選中Is On復(fù)選框律秃。

現(xiàn)在爬橡,您需要為BackgroundCheckmark子對象指定圖像。 就像您完成其他圖像一樣棒动,您將從Menu folder中獲取它們糙申,因此在Project窗口中打開該文件夾。

你需要兩張圖片:

  • settings_btn_sound為背景
  • checkmarksettings_btn_sound_checkmark

選擇層次結(jié)構(gòu)中tgl_sound中包含的背景迁客,并將“項目”窗口中的settings_btn_sound拖動到Inspector中的Source Image郭宝。 然后單擊Set Native Size

然后選擇Checkmark并重復(fù)前面的步驟掷漱,但這次使用Project窗口中的settings_btn_sound_checkmark圖像粘室。

這是您應(yīng)該在Scene View中看到的內(nèi)容:

注意:如您所見,根對象(寬矩形)的大小與背景圖像不匹配卜范。 你可以調(diào)整它的大小衔统,但這樣就好了。


Muting the Music

關(guān)于UI元素的事件處理程序的好處是海雪,有時你可以在不編寫任何代碼的情況下進(jìn)行锦爵。 相反,您可以設(shè)置UI元素以更改屬性奥裸,或僅使用Unity的界面直接調(diào)用附加到對象的組件的函數(shù)险掀。

以下是如何更改附加到MainCameraAudio Source組件的靜音(mute)屬性。

Hierarchy中選擇Tgl_Sound湾宙,然后在Inspector中找到On Value Changed(Boolean)列表樟氢。 單擊+以添加新項目。

MainCamera從層次結(jié)構(gòu)拖動到新添加的項目侠鳄。 打開功能選擇下拉列表埠啃,從頂部的Dynamic bool部分選擇AudioSource \ mute

注意:仔細(xì)查看函數(shù)選擇選項時伟恶,您將看到兩個mute屬性:一個在Dynamic bool部分碴开,另一個在Static Parameters中。

差異非常小博秫。如果在Dynamic bool部分中選擇靜音潦牛,則每次切換時,其值都將設(shè)置為切換的Active屬性的當(dāng)前值挡育。

如果從Static Parameters部分中選擇mute屬性罢绽,則會出現(xiàn)新的輸入字段,您可以將其在Inspector中的值設(shè)置為某個常量值静盅。

當(dāng)然,在Dynamic bool部分中,只有屬性和方法采用bool值蒿叠,因為toggle的激活屬性類型是bool明垢。由于您可以將任何值指定為靜態(tài)參數(shù),因此Static Parameters部分包含所有公共屬性和方法市咽。

因此痊银,當(dāng)切換處于激活狀態(tài)時(例如,等于true)施绎,它將AudioSourcemute屬性設(shè)置為true并使音樂靜音溯革。

選擇File / Save Scenes以保存到目前為止的工作,然后run the scene谷醉,打開設(shè)置對話框并嘗試打開和關(guān)閉音樂致稀。


Using Slider to Regulate the Volume

切換開關(guān)可以將其ONOFF狀態(tài)與其他組件的某個字段同步,這真的很酷俱尼,但如果您有一系列值抖单,該怎么辦? 在這種情況下遇八,您可以使用Slider UI元素矛绘。

選擇GameObject \ UI \ Slider添加滑塊。 將其重命名為Sdr_Volume并將其放在Dlg_Settings中刃永。

Hierarchy中選擇Sdr_Volume并將其錨點設(shè)置為middle-right货矮。 然后將其錨點設(shè)置為(1,0.5),以便您可以使用其右邊緣的中間點來定位它斯够。

最后將其Pos X設(shè)置為-20囚玫,將Pos Y設(shè)置為-10,將Width設(shè)置為270雳刺,將Height設(shè)置為35劫灶。

這就是Settings對話框現(xiàn)在應(yīng)該如何顯示的方式:

如果您查看層次結(jié)構(gòu),您將看到滑塊控件的部件不僅僅包含切換開關(guān)或按鈕掖桦。 以下是主要部分:

  • Background:圖像顯示滑塊的邊界及其內(nèi)部區(qū)域未填充時(即手柄一直向左)本昏。
  • Handle:手柄的圖像。 您拖動它以更改滑塊的值枪汪。
  • Fill:拉伸以顯示滑塊值的圖像涌穆。

實際上,填充圖像不是唯一可以拉伸的部分雀久,因此通常最好對所有三個部分使用9-scale images宿稀。

Project窗口中打開Menu文件夾,找到與滑塊各部分對應(yīng)的三個圖像:slider_background赖捌,slider_fillslider_handle祝沸。

對于每個圖像矮烹,在Inspector中打開Sprite Editor,并將Border的所有值設(shè)置為8罩锐,單擊Apply奉狈。

現(xiàn)在您需要為滑塊的每個部分設(shè)置相應(yīng)的圖像:

  • 1) 選擇Background并在檢查器中將slider_background拖動到Source Image
  • 2) 選擇Fill(不是 Fill Area)并將slider_fill拖動到Source Image涩惑。
  • 3) 選擇Handle并將slider_handle拖動到Source Image仁期。

如果現(xiàn)在運行場景并打開Settings對話框,您應(yīng)該會看到如下內(nèi)容:


Changing the Volume of the AudioSource Component

使用滑塊更改音樂音量類似于您使用切換開關(guān)(toggle)所做的操作竭恬。

在層次結(jié)構(gòu)中選擇Sdr_Volume跛蛋。 在Inspector中,向下滾動以查看On Value Changed(Single)列表痊硕,然后單擊+以添加新項目赊级。

MainCameraHierarchy拖動到列表中的新項目,打開函數(shù)選擇下拉列表寿桨,然后在Dynamic float部分中選擇AudioSource \ volume此衅。

選擇File / Save Scenes以保存到目前為止的工作,然后run the scene亭螟,打開設(shè)置對話框并更改滑塊的值挡鞍。 拖動滑塊手柄時,您應(yīng)該聽到音量上下移動预烙。 就個人而言墨微,我發(fā)現(xiàn)它是一個非常棒的功能。

下一篇扁掸,您將學(xué)習(xí)高級技術(shù)翘县,包括使用mask組件創(chuàng)建滑動菜單。 此外谴分,您將創(chuàng)建更多動畫并學(xué)習(xí)如何將舊GUI代碼遷移到Unity UI锈麸。

后記

本篇主要講述了Unity UI簡介,感興趣的給個贊或者關(guān)注~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牺蹄,一起剝皮案震驚了整個濱河市忘伞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沙兰,老刑警劉巖氓奈,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鼎天,居然都是意外死亡舀奶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門斋射,熙熙樓的掌柜王于貴愁眉苦臉地迎上來育勺,“玉大人但荤,你說我怎么就攤上這事〗е粒” “怎么了纱兑?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長化借。 經(jīng)常有香客問我递鹉,道長虱朵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任黎烈,我火速辦了婚禮垒手,結(jié)果婚禮上蒜焊,老公的妹妹穿的比我還像新娘。我一直安慰自己科贬,他們只是感情好泳梆,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著榜掌,像睡著了一般优妙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上憎账,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天套硼,我揣著相機(jī)與錄音,去河邊找鬼胞皱。 笑死邪意,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的反砌。 我是一名探鬼主播雾鬼,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宴树!你這毒婦竟也來了策菜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤森渐,失蹤者是張志新(化名)和其女友劉穎做入,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體同衣,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡竟块,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了耐齐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浪秘。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡蒋情,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耸携,到底是詐尸還是另有隱情棵癣,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布夺衍,位于F島的核電站狈谊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏沟沙。R本人自食惡果不足惜河劝,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矛紫。 院中可真熱鬧赎瞎,春花似錦、人聲如沸颊咬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喳篇。三九已至敞临,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杭隙,已是汗流浹背哟绊。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留痰憎,地道東北人票髓。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像铣耘,于是被迫代替她去往敵國和親洽沟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容