Acceder a componentes desde código

Contactar con el profesor

Acceder a componentes del propio objeto

public class Codigo : MonoBehaviour{
	private Transform tr;

	void Start(){
		//GetComponent es un método del objeto implícito gameObject
		tr = GetComponent<Transform>();

		// Es posible acceder directamente al componente transform de un objeto de la siguiente forma:
		tr = transform;

		Debug.Log(tr.position.x);
	}
}

Acceder a componentes de otro objeto

public class Codigo : MonoBehaviour
{
    private Transform tr;

    void Start()
    {
        GameObject go = GameObject.Find("Cube");
        Transform tr = go.transform;
        Debug.Log(tr.position.x);
    }
}

El método Find sólo accede al primer nivel de hijos de un elemento. Si queremos acceder recursivamente a los sucesivos niveles de hijos de un lemento podemos usar una función recursiva.

public static Transform RecursiveFindChild(this Transform padre, string nombreABuscar){

        for (int i = 0; i < padre.childCount; i++){
			if (padre.GetChild(i).name == nombreABuscar){
                return padre.GetChild(i);
            }else if (padre.childCount > 0){
                Transform hijoEncontrado = RecursiveFindChildAux(padre.GetChild(i), nombreABuscar);

                if (hijoEncontrado != null){
                    return hijoEncontrado;
                }
            }
        }
        Debug.LogError("No se encuentra este objeto como hijo: " + nombreABuscar);
        return null;
    }

    static Transform RecursiveFindChildAux(this Transform padre, string nombreABuscar){

        for (int i = 0; i < padre.childCount; i++){
            if (padre.GetChild(i).name == nombreABuscar){
                return padre.GetChild(i);
            }else if (padre.childCount > 0){
                Transform hijoEncontrado = RecursiveFindChildAux(padre.GetChild(i), nombreABuscar);

                if (hijoEncontrado != null){
                    return hijoEncontrado;
                }
            }
        }
        return null;
    }
Ejemplo de uso
objeto.transform.RecursiveFindChild("numero")
Ver Video
← Conceptos para realización de juegos 2D
User Interface →

Aviso Legal | Política de privacidad