我正在Unity中使用C#进行练习。简要地说:我正在创建一个不能使用new
关键字实例化的抽象类。因此,我正在创建一个接收Type变量作为输入的静态方法。然后,此变量用作AddComponent<T>
方法的输入。在我正在处理的代码下面:
abstract class BaseClass : MonoBehaviour
{
protected static T Create(T type) where T : SubClass
{
GameObject gameObject = new GameObject("MyGameObject");
return gameObject.AddComponent<type>();
}
}
//==================================================
class SubClass : BaseClass
{
static new SubClass Create()
{
return BaseClass.Create(typeof(CharacterRed));
}
}
但我收到此错误:
找不到类型或名称空间名称'T'(您是否缺少using指令或程序集引用?)
我在做什么错了?
谢谢
答案 0 :(得分:0)
您不能添加以这种方式动态设置的T型。
相反,请使用没有泛型的同一版本的API
<div>
<span class="text">hello world</span>
</div>
.text {
color: red;
}
完整代码:
gameObject.AddComponent(typeof(something))
OR
abstract class BaseClass<T> : MonoBehaviour {
protected static GameObject Create(Type type){
GameObject gameObject = new GameObject("MyGameObject");
return gameObject.AddComponent(type);
}
}