Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

problema con el GetComponent();

Iniciado por Ness, Agosto 14, 2016, 12:47:47 AM

Tema anterior - Siguiente tema
El GetComponent<GameObject>();cuando lo mando encontrar un objeto este no lo almacena en el  objeto que cree.
 

  private GameObject[] capitulos = new GameObject[2];
void Start()
    {
        controlgame = GameObject.Find("ControlGame").GetComponent<ControlGame>();
        capitulos[0] = GameObject.Find("capitulo1").GetComponent<GameObject>();
        capitulos[1] = GameObject.Find("capitulo2").GetComponent<GameObject>();
 
    }
         
         
             void Update () {
        if (capitulos[0] == null || capitulos[1] == null)
        {
            capitulos[0] = GameObject.Find("capitulo1").GetComponent<GameObject>();
            capitulos[1] = GameObject.Find("capitulo2").GetComponent<GameObject>();
            Debug.Log("alerta");
            return;
        }
     
    }

 
 
 
Mi pregunta es si alguien sabe que me esta pasando, porque con los demás objetos funciona bien pero cuando son objetos  juego no me los almacena.

El motor de Unity parte de una clase base llamada Object, diferente al object de .NET, lo que puede causar errores de compilación si no se especifica que tipo de Object se utiliza: https://docs.unity3d.com/ScriptReference/Object.html
 
A partir de UnityEngine.Object derivan otras clases como Component, que sirve para definir a los componentes, es decir, es la clase base de la que derivan las clases/objetos tipo componente, que es lo que busca el método GetComponent.
 
Efectivamente, GetComponent busca objetos tipo o derivados de Component.
 
La clase GameObject también deriva directamente de UnityEngine.Object, al igual que Component. Por lo que no puede considerarse un componente: https://docs.unity3d.com/ScriptReference/GameObject.html , como especifica la documentación es la clase base de las entidades en Unity.
 
___________________________
 
A parte de todo esto, GameObject.Find(string) devuelve un objeto tipo GameObject y no es necesario utilizar incorrectamente GetComponent<GameObject>() que te dará error de compilación ya que GameObject no deriva de Component.

Etiquetas: