Unity C# | 遊戲製作輔助線Gizmos & 常用函數清單

更新於 發佈於 閱讀時間約 4 分鐘

前言

  Gizmos是製作輔助線的函式,用於繪製物理設線視覺化、協助重疊物件點擊、紀錄物件移動路徑等等,用途將相當廣泛,算是非必要的輔助程式,用於輔助遊戲製作。
  射線和視線等等偵測機制,其實對於遊戲製作相當重要,原本繪製輔助線只是要給偵測範圍可視化,順便多學一些Unity程式代碼,沒想到炸出Physics RayCast等一系列雷射相關程式。

Gizmos介紹

詞彙

  Gizmos有英文中的「小發明」跟「小玩意兒」的意思,不過實際使用就是輔助線的意思,因為的確是輔助遊戲製作的小程式,所以叫做小玩意兒也不算太奇怪。

Unity 相關設定

  在Unity中,無論是Game還是Scenes中,在視窗的右上角都擁有一個Gizmos的按鈕,按下去會亮,代表在這個視窗中會顯示Gizmos。

基本參數

Gizmos有四個基本參數,如下:
  • color(顏色) 。繪製輔助線的顏色
  • exposure(曝光)。不常用,跟材質相關。
  • matrix(矩陣),如果輔助線會轉動等需要使用。
  • probeSize(探測針大小)。不常用,渲染相關。

啟動函式

  在Unity中,Gizmos有兩個啟動函式:
  • 程式(Script)展開時才會運作的OnDrawGizmos()
  • 程式(Script)展開和選擇時才會運作的OnDrawGizmosSelected()。
OnDrawGizmos()
{
}
DrawGizmosSelected()
{
}

常用程式函數

  因為這篇文章主要作為導覽跟紀錄,所以不會詳細介紹每一個函數,我會將官方網站的清單放在正下方,有興趣可以自行參閱。
P.S Vector3指的是三維座標,也可以只儲存二維。

01. DrawCube (Vector3 center, Vector3 size)

  繪製一個實心正方形,自帶兩個參數,中心點參數及正方形大小

02. DrawLine (Vector3 form,Vector3 to)

  繪製一條線,自帶兩個參數,起點到終點。

03. DrawRay (Vector3 from,Vector3 Direction)

  繪製一條雷射,自帶兩個參數,起點跟方向。  

04. DrawShpere (Vector3 center, Vector3 radius)

  繪製一個實心圓,自帶兩個參數,分別為中心點跟半徑。

05. DrawWireCube(Vector3 center, Vector3 size)

  繪製一個空心正方形,自帶兩個參數,中心點參數及Cube大小

06. DrawWireSphere(Vector3 center, Vector3 radius)

  繪製一個空心圓,自帶兩個參數,分別為中心點跟半徑。

使用方式

  Gizmos的運作方式跟 Start 和 Update 相似,套用前面的Gizmo程式碼,以前者作為舉例,直接在裡面寫上需要繪製的內容即可。
OnDrawGizmos()
{
  Vector3 origin = new Vector3 (0,0,0);
  Vector3 direction = new Vector3 (1,0,0);
  Gizmos.Color = new color (1,1,1,1);
  Gizmos.DrawRay(origin,direction);
}

移動物件的使用方式

  在 Unity 中 Gizmos 的座標是世界座標,如果希望輔助線隨物體移動,只需要加上一條簡單的程式碼即可。
OnDrawGizmos()
{
  Vector3 origin = new Vector3 (0,0,0);
  Vector3 direction = new Vector3 (1,0,0);
  Gizmos.matrix = transform.localToWorldMatrix;
  Gizmos.Color = new color (1,1,1,1);
  Gizmos.DrawRay(origin,direction);
}

結語

  Gizmos雖然並沒有使用太多,不過感覺會式相當重要的程式,尤其在程式的維護及傳承,對於之後的程式美術配合跟程式員彼此配合都相當有用,而且不需要也可以關起來,可以說是相當重要的輔助程式。
  更新:近期開始正式使用Raycast,因此重新拾回了Gizmos的用法,對於可視化繪製,的確是相當重要的內容。
為什麼會看到廣告
avatar-img
106會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
這篇文章主要介紹父子關係,以及相關的程式控制代碼列舉。
這篇文章主要介紹存取子讀(get)和寫(set)的概述,並且簡單介紹基本的使用方法以及其他程式呼叫範例。
這篇文章會帶你了解Unity中Inspector最基本項目中的Tag&Layer,以及Tag相關應用。
這篇文章會介紹一個靜態浮點數Time.deltaTime,並教導你製作計時器,以及計時器的相關知識與使用建議。
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
撰寫程式,如何命名很重要,本文舉例了兩種廣泛使用的命名法則,同時收錄了好程式的判斷依據和減少資源浪費的撰寫方式。
這篇文章主要介紹父子關係,以及相關的程式控制代碼列舉。
這篇文章主要介紹存取子讀(get)和寫(set)的概述,並且簡單介紹基本的使用方法以及其他程式呼叫範例。
這篇文章會帶你了解Unity中Inspector最基本項目中的Tag&Layer,以及Tag相關應用。
這篇文章會介紹一個靜態浮點數Time.deltaTime,並教導你製作計時器,以及計時器的相關知識與使用建議。
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
撰寫程式,如何命名很重要,本文舉例了兩種廣泛使用的命名法則,同時收錄了好程式的判斷依據和減少資源浪費的撰寫方式。
你可能也想看
Google News 追蹤
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
筆記:角色移動、相機控制與碰撞 1. 角色移動的基礎 移動方式選擇: Transform 組件:簡單易用,直接改變物件的位置與旋轉。 Rigidbody 物理效果:通過施加力實現真實移動,但需配置物理屬性。 現成組件或 Prefab:如 Unity 的 Character Control
第五章 筆記:使用類別、結構和物件導向程式設計(OOP) 目標與重要性 類別與物件導向程式設計(OOP):學習創建自定義類別,了解變數、建構子、方法,以及類別與結構之間的差異。 OOP 原則: 封裝(Encapsulation):限制對物件變數和方法的訪問權限。 繼承(Inherita
## 存取修飾詞詳解 在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種: 1. **Public**: 任何腳本都可以無限制地訪問 2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
Thumbnail
這篇內容,簡單介紹了GameMaker的遊戲製作原理。包括Object、參數、程式碼等概念。同時也簡單介紹了GameMaker的適用範圍和特色。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
筆記:角色移動、相機控制與碰撞 1. 角色移動的基礎 移動方式選擇: Transform 組件:簡單易用,直接改變物件的位置與旋轉。 Rigidbody 物理效果:通過施加力實現真實移動,但需配置物理屬性。 現成組件或 Prefab:如 Unity 的 Character Control
第五章 筆記:使用類別、結構和物件導向程式設計(OOP) 目標與重要性 類別與物件導向程式設計(OOP):學習創建自定義類別,了解變數、建構子、方法,以及類別與結構之間的差異。 OOP 原則: 封裝(Encapsulation):限制對物件變數和方法的訪問權限。 繼承(Inherita
## 存取修飾詞詳解 在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種: 1. **Public**: 任何腳本都可以無限制地訪問 2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
Thumbnail
這篇內容,簡單介紹了GameMaker的遊戲製作原理。包括Object、參數、程式碼等概念。同時也簡單介紹了GameMaker的適用範圍和特色。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料