材質(Materials)用來把網格(Mesh)或粒子渲染器(Particle Renderers)貼到游戲對象上。他們在定義對象怎么被顯示發揮重要組成部分。材質包括用於呈現網狀或顆粒着色器的參考,所以這些組件不能在沒有材質的情況下顯示。
Material這個需要結合Shader來講,計算機圖形學里本身就沒有Material這個東西,引擎加入這個其實是在shader和主程序之間搭建了一座橋梁,可以說Material是一個着色器管理器,所以很多接口都是對shader的控制。這里我們先講Material,后續章節會講到Shader。
Unity中材質和預設物是我們常用的兩種資源,可以在Project視圖中直接創建,非常好用,能夠簡化我們開發項目的過程。下面就對它們進行詳細介紹。
一、材質-Material
Unity中給我們提供的材質有三種:Material(普通材質)、Physic Material(物理材質)、Physics2D Material(2D的物理材質)。這里主要講前面兩種。
1、Material
我們首先創建一個材質,步驟如圖1.1:

圖1.2就是我們創建的新材質的Inspector視圖:

任何材質的屬性取決於選定的着色器(Shader)發生變化。這是最常用的三種屬性:Shader(着色器)-將被材質(Material)使用的着色器。Main Color(主顏色)-任何一種色調都可使用,不填色就使用白色。Base(基本)- 將被顯示的紋理。
材質是用來放置紋理(Textures)到你的游戲對象。您不能在沒有材質的情況下直接增加紋理,這樣做會隱式地創建一個新的材質。正確的工作流程是創建一個材質,選擇一個着色器,並選擇紋理資源(s),以一並顯示。
當我們創建好一個材質后,第一件事情就應該決定使用的着色器。我們可以從着色器下拉菜單選擇。如圖1.3:

我們可以選擇任何在項目資源文件夾存在的着色器或一個內置的着色器。還可以創建你自己的着色器,其實就是選擇一個材質類型。使用內置的着色器的詳細信息,查看內置着色器指南(Built-in Shader Guide),這里不對着色器進行研究。下面我們就用Standard(標准類型)類型的Shader來進行介紹。圖1.1就是Standard類型的Inspector視圖。
我們可以在Albedo后面的選項中點擊選擇材質的顏色,還可以通過屬性前面的小圓圈按鈕給材質添加紋理。如圖1.4:

圖中圓圈標出的地方是材質反射光,用來反射材質的顏色和紋理,如圖1.5:

2、Physic Material
按照圖1.1我們創建一個新的Physic Material,如圖1.6既是Physic Material的Inspector視圖:

Daynamic Friction:動摩擦系數,是物體運動時的摩擦系數。取值范圍為0-1,取值為0將導致物體表面接近冰面的特性,取值為1是,除非有外力或重力作用,物體將處於靜止。
Static Friction:靜態摩擦系數,是物體靜止不動時的摩擦系數。取值0-1。
物理中對摩擦力的定義是:當一個物體在另一個物體的表面上相對運動(或有相對運動的趨勢)時,受到的阻礙相對運動(或阻礙相對運動趨勢)的力,叫摩擦力,可分為靜摩擦力和滑動摩擦力。靜摩擦力—— 有相對運動的趨勢時發生作用; 滑動摩擦力 ——相對運動是發上作用。靜摩擦力<=動摩擦力。所以靜態摩擦系數要<=動摩擦系數。
Bounciness:彈力或彈性,取值0-1,0表示不發生彈跳,即物體的動能完全損失;1表示物體發生沒有動能損失的反彈,用自由落體來說明的話,如果值為1,則物體會反彈到自由落體開始的地方,而且一直這樣彈跳下去。
Friction Combine:摩擦力組合。如圖1.7:

圖中Average-使用兩個摩擦力的平均值;Minimum-使用兩個摩擦力中的最小值;Maximum-使用兩個摩擦力中的最大值;Multiply-使用兩個摩擦力的乘積。
Bounce Combine:反彈組合,同摩擦力組合的選項類似。如圖1.8:

材質創建好后直接按住鼠標左鍵拖到Scene視圖中的游戲對象上即可,拖到Hierarchy視圖中的游戲對象上也行。
二、預設體-Prefabs
Prefabs意為預設體,可以理解為一個游戲對象及其組件的集合,目的是使游戲對象及資源能夠被重復利用。預設體作為一個資源,可以應用在整個項目的不同場景中。當拖動預設體到場景中就創建了一個實體。該實體與原始預設體是關聯的。對預設體進行更改,實例也將同步修改。這樣的操作除了可以提高資源的利用率,還可以提高開發的效率。理論上推薦需要多次使用的對象都制成預設體。下面我們就創建一個新的prefabs.
首先我們創建一個Prefabs文件夾來管理我們創建的prefabs。圖1.1中也可以看到prefab選項,單擊就可以創建了,結果如圖1.9:

這個空的預設體相當於一個空的容器,等待游戲對象數據來填充,下一步我們就把Hierarchy視圖中的Cube游戲對象(需要做成預設體的游戲對象)拖到這個名為prefab-1的空預設體上,此時prefab-1的圖標會變化,而且Hierarchy視圖中的Cube字體顏色變成了藍色,如圖2.0:

這時一個完整的預設體就創建完成了,我們可以把預設體拖動放入Scene視圖場景中,多拖入幾個,如圖2.1:

此時如果我們對預設體prefab-1進行改變,那么Scene場景中的所有預設體的實例游戲對象都會隨之改變,如圖2.2:

圖中預設體prefab-1改變了顏色,所以Scene場景中的所有預設體的實例都變成了藍色,同理如果我們改變預設體prefab-1的紋理貼圖,那么它的實例也會全部改變,這里不做實驗了。
值得說一下的小技巧是:將Hierarchy視圖中的游戲對象直接拖動到Project視圖中的Prefabs文件夾中也可以快速制成一個預設體,這樣就省去了創建一個空預設體的步驟。
作者:S_H_C
鏈接:http://www.jianshu.com/p/12e0e06e3112
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。