继承MonoBehaviour类的优缺点和相关报错
Unity3D文檔里雖然說所有腳本繼承MonoBehaviour類,但如果你想自定義類,就可以不用繼承MonoBehaviour,但是這個類只能調(diào)用其中的方法和屬性,無法拖到場景的物體中使用。
所有從MonoBehaviour繼承過來的類,Unity都會自動創(chuàng)建實例,并且調(diào)用被重載的方法,例如start,Update等方法。
?
如果不繼承Mono會有哪些好處呢?
1:節(jié)約資源。
?
如果不繼承Mono會有哪些壞處呢?
1:不能使用Invoke和Coroutine了。
2:調(diào)試不方便了,不能在Inspector和Debug tab看到參數(shù)。同時如果一個類不繼承Mono,那么這個類的List表也無法在Debug界面看到。
3:不能自動調(diào)用Start,Update,OnGUI等方法。
?
考慮繼承的情況:
1、MonoBehaviour里面的方法比如Start(), Awake(), Update(), FixedUpdate(), OnGUI(),還有變量比如gameObject,這幾個方法不管你用哪一個,必須要繼承MonoBehaviour,用不用MonoBehaviour關(guān)鍵看要實現(xiàn)什么功能和屬性。
2、GameObject還是要繼承MonoBehaviour的,這樣才能new實例化一個對象,但是其他類不要繼承就行了。
?
盡量避免繼承的情況:
1、如果你的類不需要引擎提供的初始化,各種物理,渲染,著色器的回調(diào),最好不要繼承MonoBehaviour,游戲是需要優(yōu)化節(jié)約資源的。如果你本身不需要那些功能,繼承后,當引擎接觸事件,觸發(fā)的時候,就會反射調(diào)用個各種函數(shù),這是很需要耗費資源的。
2、當需要獲取用戶鼠標鍵盤輸入的時候?研究一下是否可以通過外部類的update調(diào)用自身方法實現(xiàn)。
?
繼承Mono會有一個BUG:
如果你繼承了Mono的類,你就不需要創(chuàng)建它的實例,而且你也不能new創(chuàng)建。雖然編譯可以通過,但是執(zhí)行的時候就會有個一個錯誤顯示在edit的console窗口,這時候不管你new后面是否為空,但是系統(tǒng)顯示為空,這就是一個BUG了:我的類繼承了你,雖然不能new出來,但是它認為,這不算一個錯誤啊。所以當獲取對象或其值報錯為null時,考慮是否繼承了monobehaviour類。
總結(jié)
以上是生活随笔為你收集整理的继承MonoBehaviour类的优缺点和相关报错的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软再向开发者重申:UWP 是 PC 的
- 下一篇: STM32串口DMA超时接收方法,可大大