網(wǎng)上有做口譯的網(wǎng)站么網(wǎng)站搜索排名優(yōu)化價(jià)格
前言:
當(dāng)我們?cè)谥谱魍ㄓ肧hader的時(shí)候,避免不了許多參數(shù)混雜在一起,盡管在材質(zhì)面板已經(jīng)使用過(guò)Header標(biāo)簽來(lái)區(qū)分,但是較長(zhǎng)的Shader參數(shù)就會(huì)導(dǎo)致冗余,功能塊不夠簡(jiǎn)約明了,如圖:
對(duì)于Shader制作者來(lái)說(shuō),Shader的所有功能都了解,但是對(duì)于項(xiàng)目的同組伙伴來(lái)說(shuō),我們還需要教他們這些參數(shù)的作用,那些模塊是干什么的,很不友好!
于是乎,擴(kuò)展Shader的顯示界面就變得尤為重要,如圖:
ShaderUI界面的擴(kuò)展其實(shí)也是一種編輯器擴(kuò)展,和普通的編輯器擴(kuò)展腳本的編寫方式基本一致,都可是使用EditorLayout這些UI自定義布局方法。
OnGUI
首先這是編輯器擴(kuò)展,需要調(diào)用編輯器的命名空間,同時(shí)需要繼承ShaderGUI函數(shù)
而其中,最重要的就是重寫OnGUI函數(shù)
可以看到的是,這個(gè)函數(shù)會(huì)傳遞兩個(gè)參數(shù)進(jìn)來(lái),MaterialEditor則是當(dāng)前材質(zhì)的編輯,MaterialProperty[]數(shù)組則包含了Shader中在Property里定義的所有屬性,下標(biāo)從0開(kāi)始,剩余的就和普通的編輯器擴(kuò)展一樣了。
一般在改變UI界面的屬性時(shí)對(duì)應(yīng)的material也應(yīng)該設(shè)置屬性值,則使用EditorGUI.BeginChangeCheck和EditorGUI.EndChangeCheck可以檢測(cè)屬性值是否改變并執(zhí)行相應(yīng)的操作了
基礎(chǔ)的編輯器擴(kuò)展可以看我之前的文章:Unity拓展編輯器基礎(chǔ)知識(shí)