1. 程式人生 > >GetComponent()方法? 普通類和繼承自MonoBehaviour的類?

GetComponent()方法? 普通類和繼承自MonoBehaviour的類?

在unity指令碼中使用GetComponent<T>()方法時,泛型T進行了約束,T必須為繼承自MonoBehaviour的
型別


假設附著在物體上的指令碼檔案中(指令碼檔名為test2)有test1,test2兩個類,test1繼承自MonoBehavior,test2繼承自
test1.並在此物體上的另外一個指令碼中使用GetComponent<T>()方法,當T為test1或test2型別時,GetComponent
方法始終返回的是test2型別。問題是當不在另外的指令碼中呼叫GetComponent而是在test1
中呼叫GetComponent,如果T為test2時返回的是NULL,


補充:當該指令碼檔名為test1時,呼叫GetComponent方法只能是T為test1,為test2時會報空指標錯誤。

繼承自MonoBehaviour的類不能使用new關鍵字進行例項化。

總結:個人理解為GetComponent方法中T只能代表以指令碼檔名代表的類的型別或其父類型別,否則不是
返回為NULL,就是空指標錯誤。