1. 程式人生 > >Unity Editor 基礎篇(五):Gizmos

Unity Editor 基礎篇(五):Gizmos

本文為本人學習上連線的筆記有改動,請點選以上鍊接檢視原文,尊重樓主智慧財產權。

Unity Editor–Gizmos

目標:  1.瞭解一些屬性的使用

最終效果:

這裡寫圖片描述

準備工作:  在之前的專案或者新建的專案中建立如下目錄結構:

這裡寫圖片描述

如果是新的專案,只需建立Scripts和Gizmos就好。

該文章用的到API:

這裡寫圖片描述

PS:這篇文章相對簡單,但樓主還是會細緻的介紹一遍,因為這篇文章也是該系列的一部分,如果有了解過的朋友可以忽略該篇。

基礎知識

這裡寫圖片描述

由上圖可知,Gizmos是用於在場景檢視視覺化除錯或輔助設定用的。

需要注意的是所有Gizmos的繪製必須在指令碼的OnDrawGizmos或OnDrawGizmosSelected裡編寫,因此我們的第一步便是在指令碼中新增這兩個函式。

碼了個碼:

在Scripts資料夾中建立一個C#指令碼,命名為:“MyGizmos”,雙擊開啟指令碼,碼入如下程式碼:

這裡寫圖片描述

讓我來測試一下:

這裡寫圖片描述

感覺不是每一幀都在呼叫啊!做了個測試,如果你在Scene檢視下不做任何錯誤(滑鼠滑動也不能呼叫這兩個函式),這兩個函式都沒有呼叫(看來官方文件說得不完全啊!!)。

不管了,總之大夥們知道是這麼一回事兒就行了。

PS:必須於Scene檢視下,於Game檢視下不起作用。

接下來為“MyGizmos.cs”指令碼新增如下程式碼:

這裡寫圖片描述

好,現在回到場景檢視下,如下圖所示操作:

這裡寫圖片描述

我們的線框球體便出來了,是不是很簡單

程式碼分析:

這裡寫圖片描述

該函式的第一個引數是:該線框球體的中心點位置,它是一個Vector3型別。  第二個引數是:該線框球體的半徑大小,它是一個float型別。

接下為我們的指令碼新增如下程式碼:

這裡寫圖片描述

好,現在回到場景檢視下,如下圖所示操作: 

這裡寫圖片描述

我們的線條便出來了,是不是很簡單啊。

程式碼分析:

這裡寫圖片描述

上圖已經解釋得非常清楚,兩個引數表示:從from起點到to位置繪製一條線。

因此第一個引數就是起點的位置,第二個引數就是指定的位置。 這裡寫圖片描述

上面程式碼的意思就是當前的位置朝 Z-軸 正方向根據 size 的值擴大。

接下來為我們的指令碼“MyGizmos.cs”新增如下程式碼: 

這裡寫圖片描述

好,現在回到場景檢視下,如下圖所示操作:

這裡寫圖片描述

如上圖所示,我們通過for迴圈呼叫Gizmos.繪製出了5個實心球體。

程式碼分析: 

這裡寫圖片描述

由上圖可知。第一個引數是繪製該球體的中心點的位置,第二個引數是該球體的半徑。

因此在我們的程式碼中,利用for迴圈依據nodePoints引數建立多個球體,在上面的案例中克森建立了5個球體,設定它們的半徑為0.5(大夥們也可以新增一個引數,進行動態操作半徑值)。

由於繪製的東西都是一個色,不好辨別,大夥們可以新增如下程式碼:

這裡寫圖片描述

新增後的效果:

這裡寫圖片描述

我們的球體變成了藍色,我們的線條程式設計了紅色,未設定的線框球體還是預設的白色。

PS:Gizmos.color = Color.blue,如果後續沒有重新指定繪製的顏色,則使用最後一次設定的顏色。

接下來為我們的指令碼“MyGizmos.cs”新增如下程式碼:

這裡寫圖片描述

回到場景中看看有什麼效果:

這裡寫圖片描述

好了,從上圖中大家也知道我們新增的這段程式碼的意思了吧。很簡單,就是將這些球體給連線起來。對了,連線線是綠色的,是後面設定的,大夥們也可以去設定設定,怎麼設定就不用說了吧?

由於這段程式碼和上一篇的某段程式碼一樣,就不分析了。

這裡寫圖片描述

這裡寫圖片描述

相信這個東西大夥們都知道怎麼設定吧,不過為了該文章的完整性,我們還是來操作一遍:

這裡寫圖片描述

好了,這個是手動設定的,那麼程式碼中又是如何設定的呢?

請大家新增如下程式碼: 

這裡寫圖片描述

回到場景中,看看有什麼效果發生。

咦,沒有什麼事情發生啊!!! 這裡寫圖片描述

哦,原來是找不到圖片資源。如上圖所示,這就是為什麼文章的開頭讓大夥們建立 Gizmos 資料夾的原因。現在將一張你喜歡的圖示,命名為:“icon.jpg”放入Gizmos資料夾中。

PS:圖片的命名一定要與程式碼中的第二個引數的名字一樣。

好吧,至此該篇文章的內容就此結束,是不是很無聊啊。不過沒辦法,必須要系列完整嘛。

剩下的幾個屬性和方法大夥們可以自己去嘗試一下。