盤點Unity中比較容易踩得坑(1)
作爲一名剛剛入門Unity C#的新手,在編程過程中也踩了不少坑(有些不算是坑),這裏面有不少會對遊戲運行產生少量或甚至大幅的影響,我在這裡列舉一下Unity C#中比較容易踩坑的地方以及建議。
1. 刪除不必要的空Update()方法
在我們新建腳本之後,Unity會提前爲我們創建好兩個空的內置方法:Start() 以及 Update()
新建腳本
但有些腳本並不需要這些方法,因此我們需要將它們刪除掉而不是留空,因爲無論這些內置方法是否爲空,Unity始終會通過C#的反射來調用這些方法,從而造成不必要的性能開銷。
2. Invoke() 內的方法名使用nameof代替string
在使用諸如Invoke(), InvokeRepeating()來調用方法時,盡可能使用nameof(圖2.1)來代替string(圖2.2)
圖2.2:不推薦方法
雖然不論使用哪種方法都不會出現性能上的差距,但未來一旦需要使用“Ctrl+R,Ctrl+R”快捷鍵來重命名“SampleMethod”方法時,Visual Studio會自動檢測並修改nameof(SampleMethod)(圖2.1)中的方法名,但不會自動重命名string中的常值"SampleMethod"(圖2.2),因此使用nameof增加了代碼的可維護性,降低了在未來因代碼維護而產生BUG的可能性。
3. 使用 gameObject.CompareTag() 代替 gameObject.Tag == "Tag"
在很多情況下(例如:碰撞體事件),我們需要對遊戲物體的Tag進行比較,常見的比較方法是
gameObject.tag == "Tag" 或 gameObject.CompareTag("Tag"),這裏比較推薦第二種也就是CompareTag("Tag")來比較物體的Tag。
下面列出了在分別使用兩種方式比較三次所花費的時間的測試結果
留言
發佈留言
歡迎在此寫下你的感想。