【編輯器擴(kuò)展篇】二、擴(kuò)展Hierarchy視圖

????Hierarchy視圖中出現(xiàn)的都是游戲?qū)ο?,這些對(duì)象之間同樣具有一定的關(guān)聯(lián)關(guān)系。我們可以用樹(shù)狀結(jié)構(gòu)來(lái)表示游戲?qū)ο笾g復(fù)雜的父子關(guān)系。Hierarchy視圖中的游戲?qū)ο髸?huì)通過(guò)攝像機(jī)最終投影在發(fā)布的游戲中。
1、拓展菜單
????在Hierarchy視圖中,也可以對(duì)Create菜單項(xiàng)進(jìn)行擴(kuò)展。


2、拓展布局
????在Hierarchy視圖中,同樣可以對(duì)布局進(jìn)行拓展。


3、重寫(xiě)菜單
????Hierarchy視圖中的菜單可以在原有基礎(chǔ)上拓展,如果想徹底拋棄它的菜單項(xiàng),就需要我們重寫(xiě)菜單,先用鼠標(biāo)選擇一個(gè)游戲?qū)ο?,點(diǎn)擊右鍵即可彈出我們的重寫(xiě)菜單,這個(gè)菜單項(xiàng)已經(jīng)和Unity自帶的完全不一樣了,它的工作原理就是監(jiān)聽(tīng)點(diǎn)擊事件,打開(kāi)一個(gè)新的菜單窗口。


????在上述代碼中,使用Event.current來(lái)獲取當(dāng)前的事件。當(dāng)監(jiān)聽(tīng)到鼠標(biāo)抬起的事件后,并且滿足游戲?qū)ο蟮倪x中狀態(tài),開(kāi)始執(zhí)行自定義事件。其中,EditorUtility.DisplayPopupMenu用于彈出自定義菜單,Event.current.Use()的含義是不再之星原有的操作,所以就實(shí)現(xiàn)了重寫(xiě)菜單。
????此外,Hierarchy視圖還可以重寫(xiě)系統(tǒng)自帶的菜單行為。

? ?

?因?yàn)橄到y(tǒng)自帶的菜單創(chuàng)建Image時(shí)會(huì)自動(dòng)勾選RaycastTarger,但我們重寫(xiě)了Image組件的菜單,就避免了圖片不需要處理點(diǎn)擊事件時(shí)帶來(lái)的而外開(kāi)銷,但需要通過(guò)腳本自行創(chuàng)建Image對(duì)象和組件。接著,獲取到Image組件對(duì)象,直接設(shè)置它的raycastTarget屬性即可。