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