一.標籤
前面提到了物件的元件很多樣,甚至可以自己添加,但是同樣在“檢查器”欄位的“標籤”和“圖層”卻一直默默無聞。
我就先從“標籤”開始講起,“標籤”顧名思義就是給一個或多個物件定性(標籤是可以重複的),譬如說:單機遊戲中需要一個玩家,玩家又是唯一的,這時就可以給玩家打上“Player”的標籤。如果我想要快速查找玩家的話就可以透過“標籤”來查找,同時我在點擊物件的時候可以透過“標籤”來判斷該物件的性質。
至於“圖層”的範圍則是更廣的,它往往代表了一類東西,在後期的碰撞檢測或是相機的拍攝都是需要用到“圖層”。舉個例子,我現在創建一個“平面”、一個“玩家”和四個“敵人”,並且分別打上“ground”、“player”和“enermy”,的標籤,雖然玩家和敵人的標籤不一樣,但是他們都是可以被控制的,只不過一個是被玩家控制,一個是被電腦控制。
這時候我就可以利用“圖層”把這些可以控制的物件歸為一大類,只不過注意“圖層”只能存在32個(編號從0到31)。
同時用“標籤”和“圖層”分類可以讓unity的可讀性更高,而且更方便查找,順帶一提,“圖層”還有一個獨特作用,在攝影機“渲染”下面的“剔除遮罩”可以篩選圖層,也就是可以不顯示某些圖層,這是“標籤”做不到的。
二.向量
我們高中的時候學過關於向量的知識,而unity物件的三個方向恰好和向量有關,所以現在先來複習一下關於向量的知識。
在“專案”建立新的C#腳本,命名為“VectorTest”。接下來要介紹的是“Vector3”,這是一個結構體,代表三維的三個方向XYZ(Vector4則是WXYZ),這恰好對應了物件可以移動的三個方向。而Vector3除了可以表達向量之外還能表達別的東西,具體請看下圖中的注釋。
除了自己填入變量外,C#同樣提供了一些靜態的變量,具體看下圖注釋
有了這些知識後就可以做一些向量之間的計算,C#就連計算公式都幫我們準備好了,具體看下圖中的注釋。
執行後的結果長這樣,是按照順序的。如果在是不同腳本的話順序可能不會是這樣,想要控制執行順序的話上一篇提供了兩種方法。
三.預製體
建立兩個立方體和兩個球體拼湊成一顆頭,如圖所示。
乍看之下沒什麼問題,但是一旦我想拖動這顆頭,其他的部分還是會停留在原地,這時候就可以把其他三個物件拖到作為“臉”物件的下面,成為“臉”的子物件。
但是又有一個問題,我想批量製造這顆頭的話就只要複製黏貼就好,但是如果我想修改的話又成了一個大問題,要是有100顆頭我不可能一個個去修改。這時候只要把頭從左邊的“階層”拖到右邊的“專案”,讓這顆頭變成一個“預製體”,之後想要編輯頭部只要在預製體中修改就能修改全部的頭部。