ETH官方钱包

前往
大廳
主題

Unity C# | OnCollisionEnter 的封裝

瓶裝雪 | 2023-07-21 19:00:09 | 巴幣 102 | 人氣 199

一、前言
  這篇文章將會(huì)講述 Unity 自帶參數(shù)的功能,在撰寫時(shí)要怎麼進(jìn)行封裝。

二、問題闡述
  在碰撞器與觸發(fā)器共六種 Unity 內(nèi)建的官方函式中,因?yàn)橐苯邮褂脭y帶的參數(shù),所以很多人會(huì)習(xí)慣性的把程式碼添加在內(nèi),要封裝時(shí)容易因?yàn)閯倢W(xué)習(xí)封裝的概念,導(dǎo)致出現(xiàn)錯(cuò)誤。

三、解決方式
  要解決這個(gè)問題,有兩種方式可以辦到:第一種是用帶參數(shù)的函式封裝;第二種是用斜線註解的方式封裝,本次封裝示範(fàn)的程式碼將用以下內(nèi)容為示範(fàn):

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

1. 用帶參數(shù)的函式封裝
  我們很常在 OnCollisionEnter 及其他五種函式中看到類似的寫法,也因?yàn)闆]有 Collision 導(dǎo)致無法直接換成函式,只需要多一個(gè)步驟,就是把 Collision也添加到函式就可以了。

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

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

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

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

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

四、其他應(yīng)用
  在使用其他人撰寫的插件包時(shí),我們也會(huì)遇到這樣的情況,他們大多數(shù)人在撰寫的時(shí)候都沒有經(jīng)過妥當(dāng)?shù)姆庋b,而是在 Update 就寫完了所有的功能,並且在Update 裡面撰寫暫時(shí)變數(shù)。

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

五、後記
  這篇文章講的東西其實(shí)不是那麼的特別,甚至我認(rèn)為可能不用寫成文章,因?yàn)橛腥藭?huì)跟我說:「不是本來就這樣做嗎?」,但我又想到我之前的確是不知道這件事情,想了想就寫一篇文章講述這件事情了。

送禮物贊助創(chuàng)作者 !
0
留言

創(chuàng)作回應(yīng)

??求出處學(xué)術(shù)用??
謝謝分享
2023-07-21 19:19:49

相關(guān)創(chuàng)作

更多創(chuàng)作