Unity-創(chuàng)建和使用材質(zhì)
要創(chuàng)建新材質(zhì),請從主菜單或?Project 視圖__上下文菜單中選擇?Assets > Create > Material__。
默認情況下會為新材質(zhì)指定標準著色器,并且所有貼圖屬性都為空,如下所示:

創(chuàng)建材質(zhì)后,可將其應(yīng)用于對象并在?Inspector?中調(diào)整其所有屬性。要將材質(zhì)應(yīng)用于對象,只需將其從?Project 視圖__拖到?Scene__ 或?Hierarchy?視圖中的任何對象上。
設(shè)置材質(zhì)屬性
您可以選擇希望特定材質(zhì)使用的著色器。只需在 Inspector 中展開?Shader?下拉選單,然后選擇新的著色器。所選的著色器將決定可更改的屬性。屬性可能包括顏色、滑動條、紋理、數(shù)字或矢量。如果已將材質(zhì)應(yīng)用于?Scene?視圖中的活動對象,您將看到屬性更改會實時應(yīng)用于對象。
將__紋理__應(yīng)用于屬性時可采用兩種方法。
1.將其從 Project 視圖拖到紋理方塊上 1.單擊?Select?按鈕,然后從顯示的下拉列表中選擇紋理
內(nèi)置著色器
除了標準著色器,還有許多其他類別的內(nèi)置著色器可用于特殊目的:
FX:光照和玻璃特效。
GUI?和?UI:用于顯示用戶界面圖形。
移動端 (Mobile):適用于移動設(shè)備的簡化高性能著色器。
大自然 (Nature):用于樹木和地形。
粒子 (Particles):粒子系統(tǒng)特效。
天空盒 (Skybox):用于渲染所有幾何體后面的背景環(huán)境
精靈 (Sprites):與 2D 精靈系統(tǒng)結(jié)合使用
無光照 (Unlit):用于完全繞過所有光照和陰影的渲染
舊版 (Legacy):已被標準著色器取代的大量舊著色器
著色器技術(shù)細節(jié)
一個著色器就是一個腳本,其中包含數(shù)學計算和算法,用于定義像素在模型表面上的顯示效果。標準著色器執(zhí)行復雜和逼真的光照計算。其他著色器可能使用更簡單或不同的計算來顯示不同的結(jié)果。在給定的著色器中有許多屬性,可由使用該著色器的材質(zhì)為它們賦值。這些屬性可以是數(shù)字、顏色定義或紋理,在查看材質(zhì)時會顯示在檢視面板中。然后,附加到游戲?qū)ο蟮匿秩酒鹘M件將使用材質(zhì)來渲染每個游戲?qū)ο蟮木W(wǎng)格。
允許并且通常希望多種不同的材質(zhì)引用相同的紋理。根據(jù)要求,這些材質(zhì)還可使用相同或不同的著色器。
下面的示例展示了一種可能的設(shè)置組合,其中使用三種材質(zhì)、兩種著色器和一種紋理。

圖中有一輛紅色汽車和一輛藍色汽車。兩個模型對車身使用不同的材質(zhì),分別為“Red car material”(紅色汽車材質(zhì))和“Blue car material”(藍色汽車材質(zhì))。
這兩種車身材質(zhì)使用同一個自定義著色器“Carbody Shader”(車身著色器)。使用自定義著色器的原因是該著色器為專門汽車添加了額外的特性(例如金屬性閃光渲染),或者可能具有自定義損壞遮罩功能。
每種車身材質(zhì)均引用“Car Texture”(汽車紋理),這是包含車身所有細節(jié)但沒有具體油漆顏色的紋理貼圖。
車身著色器還接受一種色調(diào)顏色;紅色和藍色汽車設(shè)置為不同的顏色,使每輛汽車的外觀不同,但兩者使用同一種紋理。
車輪模型也使用單獨的材質(zhì),但這次兩輛汽車共用相同的車輪材質(zhì),因為每輛汽車的車輪沒有差異。車輪材質(zhì)使用標準著色器,并同樣引用汽車紋理。
注意汽車紋理包含的車身和車輪細節(jié):這是一個紋理圖集,意味著紋理圖像的不同部分被顯式映射到模型的不同部分。
即使車身材質(zhì)使用的紋理也包含車輪圖像,車輪細節(jié)也不會出現(xiàn)在車身上,因為該紋理的那部分未映射到車身幾何體。
同樣,車輪材質(zhì)使用相同的紋理,其中也有車身細節(jié)。車輪上不會出現(xiàn)車身細節(jié),因為只有顯示車輪細節(jié)的紋理部分才映射到了車輪幾何體。
此映射由 3D 美術(shù)師在外部 3D 應(yīng)用程序中完成,稱為“UV 貼圖”。
更具體地說,著色器定義了:
對象渲染方法。此方法包括代碼和數(shù)學計算,其中可能包括光源的角度、視角以及任何其他相關(guān)計算。著色器還可根據(jù)最終用戶的圖形硬件指定不同的方法。
可在材質(zhì)檢視面板中自定義的參數(shù),例如紋理貼圖、顏色和數(shù)值。
材質(zhì)定義了:
用于渲染此材質(zhì)的著色器。
著色器參數(shù)(例如要使用的紋理貼圖、顏色和數(shù)值)的具體值。
自定義著色器應(yīng)由圖形工程師構(gòu)建。為創(chuàng)建自定義著色器,需要使用一種十分簡單的語言:__ShaderLab__。然而,讓著色器在各種顯卡上正常工作是一項復雜的工作,需要相當全面的顯卡工作原理知識。
Unity 中直接內(nèi)置了許多著色器,還有一些著色器位于標準資源 (Standard Assets)?庫中。