Unity C# | OnCollisionEnter 的封裝

更新 發佈閱讀 3 分鐘

一、前言

  這篇文章將會講述 Unity 自帶參數的功能,在撰寫時要怎麼進行封裝。

二、問題闡述

  在碰撞器與觸發器共六種 Unity 內建的官方函式中,因為要直接使用攜帶的參數,所以很多人會習慣性的把程式碼添加在內,要封裝時容易因為剛學習封裝的概念,導致出現錯誤。

三、解決方式

  要解決這個問題,有兩種方式可以辦到:第一種是用帶參數的函式封裝;第二種是用斜線註解的方式封裝,本次封裝示範的程式碼將用以下內容為示範:

public class OnCollisionEnterTest : MonoBehaviour
{
private void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.CompareTag("Cube"))
{
//Do something.
}
}
}

1. 用帶參數的函式封裝

  我們很常在 OnCollisionEnter 及其他五種函式中看到類似的寫法,也因為沒有 Collision 導致無法直接換成函式,只需要多一個步驟,就是把 Collision也添加到函式就可以了。

private void OnCollisionEnter(Collision collision)
{
CatchCube(collision);
}
private void CatchCube(Collision collision)
{
if (collision.gameObject.CompareTag("Cube"))
{
//Do something.
}
}
}

  如果有其他在運作的程式碼,也可以用相同的方式進行封裝,這樣一來在官方函式的下面會有很漂亮的不同功能,而不是雜亂的一堆程式碼。

2. 用斜線註解

  運用斜線進行註解也是可行的做法,如果不想要把程式碼切割分的太細,則可以考慮用斜線註解的方式,避免下一次編輯程式的時候還需要閱讀程式碼,可以直接開始撰寫新的內容。

private void OnCollisionEnter(Collision collision)
{
//Catch Cube To Do Something.
if(collision.gameObject.CompareTag("Cube"))
{
//Do something.
}
}

  這就是一個很好的例子,我們把抓取 Cube 的程式碼前面說明公用,未來就可以略過這個程式碼去理解其他部分,或是針對這個部分去進行維護,優點在於可以提供更多資訊,缺點在於程式碼變長了。

四、其他應用

  在使用其他人撰寫的插件包時,我們也會遇到這樣的情況,他們大多數人在撰寫的時候都沒有經過妥當的封裝,而是在 Update 就寫完了所有的功能,並且在Update 裡面撰寫暫時變數。

  在之前我只能逐字去閱讀,非常沒有效率,也容易失去焦點,現在我們可以用帶參數的函式去封裝程式碼,把功能逐步拆分開來,整理完程式碼的同時,對於這個插件包的功用也就理解了。

五、後記

  這篇文章講的東西其實不是那麼的特別,甚至我認為可能不用寫成文章,因為有人會跟我說:「不是本來就這樣做嗎?」,但我又想到我之前的確是不知道這件事情,想了想就寫一篇文章講述這件事情了。

留言
avatar-img
瓶裝雪的沙龍
117會員
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
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
這篇文章將會講述 Unity 自帶參數的功能,在撰寫時要怎麼進行封裝。
Thumbnail
這篇文章將會講述 Unity 自帶參數的功能,在撰寫時要怎麼進行封裝。
Thumbnail
C# 9.0 給 Unity 程式設計上帶來的便利
Thumbnail
C# 9.0 給 Unity 程式設計上帶來的便利
Thumbnail
這篇文章將會講述 Unity C# 中關於 Interface (介面/接口)的基本介紹以及原理說明,最後提供完整的使用流程。
Thumbnail
這篇文章將會講述 Unity C# 中關於 Interface (介面/接口)的基本介紹以及原理說明,最後提供完整的使用流程。
Thumbnail
這篇文章將會分享 Clean Code 關於函式的重點,內容主要以個人閱讀後有印象的部分著手,有興趣了解更多請自行購買這本書。
Thumbnail
這篇文章將會分享 Clean Code 關於函式的重點,內容主要以個人閱讀後有印象的部分著手,有興趣了解更多請自行購買這本書。
Thumbnail
這篇文章將會講述 Unity Event 的介紹及基礎使用方法。
Thumbnail
這篇文章將會講述 Unity Event 的介紹及基礎使用方法。
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
前言   這篇文章將會講述碰撞事件的撰寫,跟碰撞事件有關的函式共有六種,分別為 OnCollisionEnter/Stay/Exit 和 OnTriggerEnter / Stay /Exit ,本篇文章將會講述通用的邏輯。 Collider | 碰撞體   在之前我從組件(Component)和程
Thumbnail
前言   這篇文章將會講述碰撞事件的撰寫,跟碰撞事件有關的函式共有六種,分別為 OnCollisionEnter/Stay/Exit 和 OnTriggerEnter / Stay /Exit ,本篇文章將會講述通用的邏輯。 Collider | 碰撞體   在之前我從組件(Component)和程
Thumbnail
本篇文章將會介紹C#的基礎構成和字串的使用,若想要更詳細的教學,可以參考前一篇文章,前往Microsoft官方教學學習。
Thumbnail
本篇文章將會介紹C#的基礎構成和字串的使用,若想要更詳細的教學,可以參考前一篇文章,前往Microsoft官方教學學習。
Thumbnail
本文以實際的程式碼來說明Value Type和Reference Type的差異,並介紹實用的除錯工具。
Thumbnail
本文以實際的程式碼來說明Value Type和Reference Type的差異,並介紹實用的除錯工具。
Thumbnail
撰寫程式,如何命名很重要,本文舉例了兩種廣泛使用的命名法則,同時收錄了好程式的判斷依據和減少資源浪費的撰寫方式。
Thumbnail
撰寫程式,如何命名很重要,本文舉例了兩種廣泛使用的命名法則,同時收錄了好程式的判斷依據和減少資源浪費的撰寫方式。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News