一、前言
這篇文章將會(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ì)跟我說:「不是本來就這樣做嗎?」,但我又想到我之前的確是不知道這件事情,想了想就寫一篇文章講述這件事情了。