Unity C# | 建構式(constructor)

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

一、前言

  這篇文章將會介紹建構式(Constructor),這是隱藏於程式腳本的知識,程式極常使用建構式,但初階程式員不需要知道它。

二、建構式

  學習遊戲程式的第一站,我想大多數人都是學習如何讓物件移動,因此會使用座標系統(Vector3或Vector2),在新建一個Vector3實例的過程中,我們就使用到了建構式。

1. 基本定義

  首先,建構式"不用"為資料類別命名(例如為新的 flaot 命名 a),無 void 參數亦不回傳,用於溝通呼叫該函式(建構式)者,如何設定該腳本中的參數。

  若無建立建構式,則系統自動撰寫隱藏的建構式,該建構式為空函式,無任何程式碼區塊,自行創立建構式來定義參數,是中高階程式降低耦合性的手段。

2. 建構與初始化

public Player(HealthSystem hp,EnergySystem mp)
{
this.HealthSystem = hp;
this.EnergySystem = mp;
}

  我們可以把建構式看成創建新角色的流程,裡面的欄位很完整,有血量、魔力、攻擊力與防禦力,建構式就像是一個設計指令,你要怎麼樣的角色?

  如果我們沒有特別撰寫建構式,那這一個角色就會是一個默認的角色,所有的數值都是零,因此這個角色不存在;如果我們自己撰寫一個建構式,則可以讓角色有一個默認的基礎數值。

  如果我們相要這個角色特別一點,我們可以使用使用別的建構式創造一個比較強大的角色,這將使用物件導向多載的概念,也就是相同的函式命名但攜帶不同的參數。

3. 默認與參數

  沒有參數的建構式我們稱之為默認的建構式,隱藏在程式腳本後的是系統幫你寫好的默認建構是;攜帶參數的建構式可以讓別人建構此程式腳本時,指定一些基礎的數值,譬如等級十。

三、Unity 中的使用

  我們來看看在 Unity 中我們已經用過的建構式,這些建構是從新手到現在都依然會持續使用的程式,我們很常使用到它們的建構式。

1. 三維座標(Vector3)

我們很常在 Unity 的程式馬中撰寫關於 Vector3 的內容,例如:

vector3 playerPosition = new Vector3(0,0,0);

  上面使用 new 關鍵字創建一個新的三維向量,三維向量本身就是一個程式腳本,使用關鍵字就是在使用建構式。

2. 顏色(Color)

如果你有使用過顏色,那你應該也會使用類似的寫法:

Color boxcolor = new Color(float r, float g, float b);

  如同座標系統,這也是在調用建構式,而我們除了可以寫RGB以外,還可以在後面添加透明度,同個名稱不同參數的概念稱之為多載:

Color boxcolor = new Color(float r, float g, float b,float a);

3. 四元數(Quaternion)

  如果你曾經撰寫過物件轉向或旋轉,那你肯定有聽過四元數,不過我們通常會用四元數字帶的腳本去轉換成三維座標,所以這邊不特別舉例。

四、後記

  建構式是最讓我震驚的一個學習知識,當我了解到建構式的概念後,我發現有很多程式設計上的東西都被點通了,有趣的地方在於,我是在接觸物件導向的設計模式時才碰觸到建構式,而當我學會有限狀態機後,我發現建構式是降低耦合性的重要手段。














































留言
avatar-img
留言分享你的想法!
avatar-img
瓶裝雪的沙龍
111會員
247內容數
你好,我是瓶裝雪!我是一名遊戲設計師!
瓶裝雪的沙龍的其他內容
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
看更多
你可能也想看
Thumbnail
這篇文章將會講述設計模式中的狀態模式,其資料源自於書籍、網路、個人理解,從簡介→架構→撰寫→測試的整個流程進行介紹與分享。
Thumbnail
這篇文章將會講述設計模式中的狀態模式,其資料源自於書籍、網路、個人理解,從簡介→架構→撰寫→測試的整個流程進行介紹與分享。
Thumbnail
這篇文章將會介紹建構式(Constructor),這是一個隱藏在程式腳本中的重要知識,我們極常使用建構式,但新手程式員幾乎不會知道它。
Thumbnail
這篇文章將會介紹建構式(Constructor),這是一個隱藏在程式腳本中的重要知識,我們極常使用建構式,但新手程式員幾乎不會知道它。
Thumbnail
這篇文章將會講述子彈射擊與命中的思路,不包含實際程式設計。
Thumbnail
這篇文章將會講述子彈射擊與命中的思路,不包含實際程式設計。
Thumbnail
一、前言   這篇文章將會簡單介紹物件導向的設計模式,以及學習這項技術需要有哪些先備知識,學習才會比較順利。 二、設計模式   在物件導向中,除了最基本的五大原則以外,其實還有一知名的概念,那就是設計模式(Design Pattern),它能運用到很多層面。 1. 解決一再出現的問題   許多程式設
Thumbnail
一、前言   這篇文章將會簡單介紹物件導向的設計模式,以及學習這項技術需要有哪些先備知識,學習才會比較順利。 二、設計模式   在物件導向中,除了最基本的五大原則以外,其實還有一知名的概念,那就是設計模式(Design Pattern),它能運用到很多層面。 1. 解決一再出現的問題   許多程式設
Thumbnail
這篇文章將會分享一場討論程式發展階段的體悟。
Thumbnail
這篇文章將會分享一場討論程式發展階段的體悟。
Thumbnail
這篇文章將會講述類圖的基本介紹,並且詳細敘述從零開始製作完整的類圖流程。
Thumbnail
這篇文章將會講述類圖的基本介紹,並且詳細敘述從零開始製作完整的類圖流程。
Thumbnail
介紹 在過去的歷史裡開發程式都是以呼叫Function的方式來做程式開發,後來才有了物件導向設計的概念,而物件導向程式設計的概念就是,使用【物件】的方式來設計程式。 Q: 什麼是【物件】? A:【物件】會包含以下這四個特性: 抽象(Abstraction) 封裝(Encapsulation)
Thumbnail
介紹 在過去的歷史裡開發程式都是以呼叫Function的方式來做程式開發,後來才有了物件導向設計的概念,而物件導向程式設計的概念就是,使用【物件】的方式來設計程式。 Q: 什麼是【物件】? A:【物件】會包含以下這四個特性: 抽象(Abstraction) 封裝(Encapsulation)
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News