Unity Spain
Post Antiguos => General (Antiguo) => Mensaje iniciado por: Ness en Agosto 14, 2016, 12:47:47 AM
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 (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 (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.