studio - Unidad/C#Encontrar objeto y obtener componente
visual studio installer (2)
Esto debería ser fácil:
GameObject myCube = GameObject.Find("Cubey").GetComponent<GameObject>();
simplemente lanza el error CS0309: El tipo UnityEngine.GameObject debe ser convertible a UnityEngine.Component para usarlo como parámetro T en el tipo genérico o método UnityEngine.GameObject.GetComponent ()
Normalmente, los errores que muestra Unity son útiles, pero esto es simplemente confuso. ¿Los cubos no son GameObjects? Cualquier puntero sería apreciado (sin juego de palabras).
GameObject
no es un componente. Un GameObject
tiene un montón de Component
adjuntos.
Puede quitar la llamada GetComponent
y simplemente usar el resultado de su Find("Cubey")
GameObject myCube = GameObject.Find("Cubey");
Eso es un error fácil, estado allí ... muchas veces en realidad :)
Lo explicaría así, sin olvidar que siempre hay una posibilidad de que esté equivocado o que no haya entendido bien este problema :)
GameObject es un tipo. Por lo tanto, el tipo GameObject solo se puede asociar con GameObjects o cosas que hereda de GameObject.
El significado de esto es: la variable GameObject solo puede apuntar a GameObjects y subclases de GameObject. El código a continuación está apuntando a un Componente que es de tipo GameObject.
GameObject.Find("Cubey").GetComponent<GameObject>();
Esto significa encontrar Cubey y señalar un GameObject adjunto a Cubey.
Supongo que como ya dije antes, el Componente que está buscando no es del tipo GameObject.
Si desea que la variable GameObject myCube apunte a Cubey, puede hacer lo siguiente:
GameObject myCube;
void Start(){
// Lets say you have a script attached called Cubey.cs
// This is a slow approach
myCube = GameObject.FindObjectOfType<Cubey>();
}
// A faster approach is to do
// You need to then attach cubey through the inspector
public GameObject myCube;
Espero que ayude a los usuarios a llegar a esta publicación con el mismo problema.