类型’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。

将通用约束附加到您的方法,以确保您的TComponent

 protected void AttachComponent() where T : Component { // Your code. }