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 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
Thumbnail
這篇內容,簡單介紹了GameMaker的遊戲製作原理。包括Object、參數、程式碼等概念。同時也簡單介紹了GameMaker的適用範圍和特色。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
基礎魔法,就是攻擊跟防禦; 像是Revit最根本的建模方法,就是[攻擊]內建模型中 那五個,[防禦]最後就是空心幾何裡面的五個,交互混搭而成。 主要建模就是快速 塑型的能力,之後再加上簡單程式碼去操控。 Blender就是,操控[點、線、面]建模,加上boolean混和應用。
Thumbnail
建立幾個變數如下,最上面兩個變數值為清單值 接下來分別設定球1位置到左上角落、設定球2位置到右上角落、設定球3位置到左下角落、設定球4位置到右下角落 當螢幕初始化的時候,設定玩家球的X、Y座標和大小,並將玩家球的初始顏色,設定成(變數_顏色清單)中.....
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
介紹以物件導向的方式,以向量來實作物體運動的模擬程式。
Thumbnail
這篇內容,簡單介紹了GameMaker的遊戲製作原理。包括Object、參數、程式碼等概念。同時也簡單介紹了GameMaker的適用範圍和特色。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
基礎魔法,就是攻擊跟防禦; 像是Revit最根本的建模方法,就是[攻擊]內建模型中 那五個,[防禦]最後就是空心幾何裡面的五個,交互混搭而成。 主要建模就是快速 塑型的能力,之後再加上簡單程式碼去操控。 Blender就是,操控[點、線、面]建模,加上boolean混和應用。
Thumbnail
建立幾個變數如下,最上面兩個變數值為清單值 接下來分別設定球1位置到左上角落、設定球2位置到右上角落、設定球3位置到左下角落、設定球4位置到右下角落 當螢幕初始化的時候,設定玩家球的X、Y座標和大小,並將玩家球的初始顏色,設定成(變數_顏色清單)中.....