Unity C# | virtual & override

閱讀時間約 4 分鐘

一、前言

  這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。


二、虛擬(virtual)

  虛擬具有多態性(Polymorphism)與擴展性(Extensibility),能讓程式根據實際運用產生不同效果,並方便程式員擴展程式碼而不用訪問基類。


1. 多態性(Polymorphism)

  當基類中的方法被標記為 virtual 時,它可以在派生類別中被覆寫(override)。當A腳本繼承B的內容時,稱B為基類、A為派生類別。這使得相同的函式,根據實際對象的類型而執行不同的實現,這稱之為多態性。


2. 擴展性(Extensibility)

  因為覆寫的存在,可以在不觸碰基類的情況下,擴增或修改基類的函式與變數,這種在不修改現有程式碼的情況下增加功能,稱為擴展性。


3. 存取修飾詞

  談到繼承與覆寫,就可以了解一個新的存取修飾詞"protected"了,該存取修飾詞所修飾的欄位,只有在派生類別才能存取。


三、覆蓋(override)

  基本上覆蓋(override)跟虛擬(virtual)是一起使用的,用於派生類別中覆蓋基類的函式或變數。


1. 用法

  在派生類別中,創建一個與基類一模一樣的函式,在其存取修飾詞後面添加"Override"修飾詞即可。使用 override 以後,就可改寫該函式或變數,可以結合基類的程式,或是完全重寫。


2. 基類

  在派生類別中,如果想執行基類的程式,則可以在覆蓋的函式中打上"Base.Function();"來執行基類的函式,該處的 Function(); 則是這個函式的名稱。


四、使用流程

  在 Unity 中,有一個很常用的繼承,那就是 MonoBehaviour,任何腳本只能繼承一個類別,因此可能會被 Monobehaviour 給困住,只要把含 MonoBehaviour 的腳本當作基類即可。


1. 在 Unity 中創建空腳本

  在 Unity 中創建一個空的腳本,命名為"VirtualTest"並刪除不必要的 Start 與 Update 函式。


using UnityEngine;


public class VirtualTest : MonoBehaviour

{

}


2. 宣告虛擬類型

  隨後,宣告虛擬類型。


using UnityEngine;


public class VirtualTest : MonoBehaviour

{

protected virtual void virtualMethod() { }

}


3. 創建新的腳本並繼承腳本

  創建一個新的腳本"VirtualTest_Child",同樣刪除不必要的函式,這次把 Monobehaviour 換成"VirtualTest"。


using UnityEngine;


public class VirtualTest_Child : VirtualTest

{

}


4. 覆蓋虛擬類型

  創建同樣命名的函式,連同存取關鍵字一起照抄,原本 virtual 的位置改為 override ,這樣就成功了。


using UnityEngine;


public class VirtualTest_Child : VirtualTest

{

protected override void virtualMethod()

{

//Do something

}

}


5. 執行基類程式

  如果希望執行基類程式,則添加"base.virtualMethod();"即可,該行程式碼會執行基類的程式內容。


using UnityEngine;


public class VirtualTest_Child : VirtualTest

{

protected override void virtualMethod()

{

base.virtualMethod();

}

}


五、後記

  最近天氣真的很冷,還要趕專題的進度,總覺得寫文章的時間越來越少了阿。

103會員
246Content count
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
期末結束了,我將分享我的作品、開發狀況、開發方向。
這篇文章將會介紹第三人稱遊戲設計中,關於角色的建模與動畫的設計與製作。
這篇文章將會講述設計與製作一款第三人稱控制器所需要的工具、要素之概述。
這篇文章將會分享我用 Time line 製作的 Unity 部份概念動畫,並講述其中要呈現的特點與打擊感的分析。
這篇文章將會講述 Time line 的基礎軌道,並分享官方製作的 Time line 素材包。
期末結束了,我將分享我的作品、開發狀況、開發方向。
這篇文章將會介紹第三人稱遊戲設計中,關於角色的建模與動畫的設計與製作。
這篇文章將會講述設計與製作一款第三人稱控制器所需要的工具、要素之概述。
這篇文章將會分享我用 Time line 製作的 Unity 部份概念動畫,並講述其中要呈現的特點與打擊感的分析。
這篇文章將會講述 Time line 的基礎軌道,並分享官方製作的 Time line 素材包。
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
每個專案開發,都是由多個工程師來完成,就算只有一個人,隨著專案增量,你便會與過去的你面對面,這時候程式碼的可讀性高低就會成為左右你開發效率的一塊石頭,這篇就來說說幾個程式碼管理的小撇步
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 變數 宣告變數不能使用數字開頭,或是除了_之外的符號。 ·整數 int ·浮點數 float、double float 精度低、佔的資源較少,double
Thumbnail
Unity (美股代號:U) 是全球最大的遊戲製作平台與龍頭引擎。不過股價自高點滑落並盤據20-30元已經有一段時間。此次財報非常樂觀,值得一看。
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。
Thumbnail
來談一下最近我很感興趣的一個投標,遊戲開發平台 Unity。
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
每個專案開發,都是由多個工程師來完成,就算只有一個人,隨著專案增量,你便會與過去的你面對面,這時候程式碼的可讀性高低就會成為左右你開發效率的一塊石頭,這篇就來說說幾個程式碼管理的小撇步
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 變數 宣告變數不能使用數字開頭,或是除了_之外的符號。 ·整數 int ·浮點數 float、double float 精度低、佔的資源較少,double
Thumbnail
Unity (美股代號:U) 是全球最大的遊戲製作平台與龍頭引擎。不過股價自高點滑落並盤據20-30元已經有一段時間。此次財報非常樂觀,值得一看。
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。
Thumbnail
來談一下最近我很感興趣的一個投標,遊戲開發平台 Unity。