管理材質(zhì)
Shader和Material的關(guān)系
????Shader能夠設(shè)置游戲物體的顏色或者能夠通過材質(zhì)來配置顏色。實(shí)際上,一個(gè)shader能夠讓許多物體看起來像是完全不同的物質(zhì)。
????Shader和材質(zhì)作為一個(gè)整體工作:Shader定義了表面看起來可以像哪些東西,材質(zhì)讓表面真正看起來是哪一個(gè)具體的東西。
修正紫紅色的材質(zhì)
? ? 當(dāng)我們從一個(gè)項(xiàng)目導(dǎo)入資源到當(dāng)前項(xiàng)目時(shí),有時(shí)會(huì)出現(xiàn)兩個(gè)項(xiàng)目的渲染管線不匹配的情況,此時(shí)shader也是不匹配的。當(dāng)某個(gè)材質(zhì)使用的shader和當(dāng)前渲染管線不匹配時(shí),Unity Editor會(huì)使用明亮的紫紅色來做警告提示,如下圖所示。

????上圖例子的工程時(shí)URP,為了修復(fù)紫紅色檸檬的問題,我們先選中這個(gè)游戲物體,在其Inspector面板中,可以看到其材質(zhì)的shader被設(shè)置為了Standard。在Unity中,如果shader的名字為Standard,則其基本就是Built-in渲染管線的Standard Shader,這種shader在URP工程中是無法正常工作的。我們需要將其改成一個(gè)URP shader來修復(fù)這個(gè)問題。
????在Shader下來菜單中,選擇Universal Render Pipeline -> Lit,隨后我們可以看到問題被修復(fù)了。

????上面所說的方法僅僅是最簡(jiǎn)單的一種修復(fù)材質(zhì)錯(cuò)誤的方法,但是還有其他很多錯(cuò)誤材質(zhì)的問題并沒有這么簡(jiǎn)單就可以修復(fù)。
URP自動(dòng)材質(zhì)升級(jí)
????URP有一個(gè)built-in工具來自動(dòng)轉(zhuǎn)換問題材質(zhì)。其步驟如下:
????1. Unity Editor的主菜單中,選擇 Edit -> Render Pipeline -> Universal Render Pipeline -> Upgrade Project Materials to UniversalIRP Materials。
????2. 做完第一步后,由于這個(gè)選項(xiàng)會(huì)修改工程文件,會(huì)有一個(gè)彈窗提示確認(rèn)你是否已經(jīng)備份過項(xiàng)目了。確認(rèn)后選擇Proceed就可以了。
URP項(xiàng)目游戲物體的默認(rèn)材質(zhì)
????在URP項(xiàng)目中,添加一個(gè)Sphere到場(chǎng)景中,我們可以看到,它有一個(gè)默認(rèn)材質(zhì)Lit。

????點(diǎn)擊Lit,在其Inspector面板中可以看到,它對(duì)應(yīng)的shader是Universal Render Pipeline/Lit Shader。

????我們還可以看到,默認(rèn)材質(zhì)的Inspector中的所有東西都是灰的,表明其相關(guān)shader和屬性在Editor中是無法修改的(但可以通過代碼來修改)。
在項(xiàng)目窗口中查找材質(zhì)
????當(dāng)我們導(dǎo)入了不同資源到項(xiàng)目中后,如何能快速查找項(xiàng)目中的所有材質(zhì)呢?
????首先在項(xiàng)目窗口中點(diǎn)擊下圖的圖標(biāo),選擇“Two Colume layout”
? ??

? ? 然后在搜索框里輸入t:Material(t表示type,例如想搜索所有腳本,就使用t:Script):

????如果想要搜索帶關(guān)鍵字的材質(zhì),則再加上關(guān)鍵字即可,如下圖會(huì)搜索名字里有red的材質(zhì):

應(yīng)用材質(zhì)到游戲物體上
????在場(chǎng)景中選擇游戲物體,查看Inspector面板,在Mesh Renderer組件中的Materials下,可以進(jìn)行材質(zhì)的選擇。

????當(dāng)然,也可以拖動(dòng)項(xiàng)目窗口中想要應(yīng)用的材質(zhì)到場(chǎng)景中的某個(gè)游戲物體上。
? ? 一個(gè)材質(zhì)可以應(yīng)用到多個(gè)游戲物體上,當(dāng)我們修改材質(zhì)的屬性時(shí),所有使用這個(gè)材質(zhì)的游戲物體都會(huì)發(fā)生變化。由于材質(zhì)是整個(gè)項(xiàng)目范圍內(nèi)都能看到的,因此即使不同場(chǎng)景的不同游戲物體,只要它們使用同一個(gè)材質(zhì),材質(zhì)屬性改變后,這些游戲物體也都會(huì)變化。
創(chuàng)建材質(zhì)
????一般在Unity項(xiàng)目中,我們會(huì)創(chuàng)建一個(gè)叫做Materials的目錄或類似的目錄來管理存放材質(zhì)。下面的例子會(huì)以Materials目錄名為例,來看材質(zhì)的創(chuàng)建過程。
????首先,我們?cè)趫?chǎng)景中新增一個(gè)Cube

????然后在項(xiàng)目窗口中,找到Materials目錄,點(diǎn)擊后,在這個(gè)目錄下點(diǎn)擊右鍵,選擇Create->Material:

????命名這個(gè)材質(zhì)名為CubeMaterial,然后在Inspctor里調(diào)整一下相關(guān)屬性,最后應(yīng)用這個(gè)材質(zhì)到前面創(chuàng)建的Cube游戲物體上。
