类型’T’不能用作generics类型或方法中的类型参数’T’
我有以下方法:
protected T AttachComponent(){ T gsComponent = gameObject.GetComponent(); if(gsComponent == null){ gsComponent = gameObject.AddComponent(); } return gsComponent; }
在AddComponent
行上,我收到以下错误:
类型’T’不能用作generics类型或方法’GameObject.AddComponent()’中的类型参数’T’。 从’T’到’UnityEngine.Component’没有装箱转换或类型参数转换。
我不知道我能做些什么来解决这个错误,为什么我不能这样做?
问题是AddObject方法返回一个Component 。 您需要告诉编译器您的T实际上是一种Component。
将通用约束附加到您的方法,以确保您的T
是Component
protected void AttachComponent() where T : Component { // Your code. }