类型'T'不能用作泛型类型或方法中的类型参数'T'

Get*_*awn 6 c# unity-game-engine

我有以下方法:

protected T AttachComponent<T>(){
    T gsComponent = gameObject.GetComponent<T>();
    if(gsComponent == null){
        gsComponent = gameObject.AddComponent<T>();
    }
    return gsComponent;
}
Run Code Online (Sandbox Code Playgroud)

AddComponent行我收到以下错误:

类型'T'不能用作泛型类型或方法'GameObject.AddComponent()'中的类型参数'T'.从'T'到'UnityEngine.Component'没有装箱转换或类型参数转换.

我不知道我能做些什么来解决这个错误,为什么我不能这样做?

RB.*_*RB. 15

问题是AddObject方法返回一个Component.您需要告诉编译器您的T实际上是一种Component.

附上通用约束你的方法,以确保您的Ts为Component小号

protected void AttachComponent<T>() where T : Component
{
    // Your code.
}
Run Code Online (Sandbox Code Playgroud)