这应该很简单:
GameObject myCube = GameObject.Find("Cubey").GetComponent<GameObject>();
启动错误CS0309:类型UnityEngine.GameObject必须可转换为UnityEngine.Component,以便在泛型类型或方法中将其用作参数T UnityEngine.GameObject.GetComponent()
通常Unity显示的错误很有用,但这只是令人困惑。立方体不是GameObjects吗?任何指针都会受到赞赏(没有任何双关语)。
答案 0 :(得分:9)
GameObject
不是一个组件。 GameObject
附加了一堆Component
。
您可以取消GetComponent
来电,只使用Find("Cubey")
GameObject myCube = GameObject.Find("Cubey");
答案 1 :(得分:3)
一个容易犯的错误,实际上是太多次了。)
我会这样解释:
GameObject是一种类型。 GameObject类型只能与GameObjects或从GameObject继承的东西相关联。
这意味着:GameObject变量只能指向GameObjects和GameObject的子类。下面的代码指向一个类型 GameObject的组件。
GameObject.Find("Cubey").GetComponent<GameObject>();
代码说“Find Cubey并指向附加到Cubey的GameObject”。
我猜如上所述,您正在寻找的组件不属于GameObject类型。
如果您希望变量GameObject myCube指向Cubey,您可以这样做:
GameObject myCube;
void Start(){
// Lets say you have a script attached called Cubey.cs, this solution takes a bit of time to compute.
myCube = GameObject.FindObjectOfType<Cubey>();
}
// This is a usually a better approach, You need to attach cubey through the inspector for this to work.
public GameObject myCube;
希望能帮助任何人来这个帖子遇到同样的问题。