Índice del curso de Unity 3D

  1. Introducción
  2. Instalación
  3. Interfaz
  4. Conceptos básicos
  5. Ejercicio: cubos
  6. Cambiar el color de algo
  7. Introducción a C#
  8. Conceptos para realización de juegos 2D
  9. Acceder a componentes desde código
  10. Uso del transform
  11. User Interface
  12. Elije tu propia aventura
  13. Acierta imagen
  14. Sprites
  15. Fall Down Game
  16. Galería de tiro
  17. Corrutinas
  18. Flappy Bird
  19. PONG
  20. Carreras
  21. Panel Animator
  22. Plataformas
  23. Plataformas
  24. Puzzle con Raycast
  25. Plataformas con RayCast
  26. Memory (juego de las parejas)
  27. Guardar y recuperar información almacenada
  28. Máscara
  29. Publicación
  30. Ejercicio: First Person Shooter
  31. Multijugador con Photon

Acceder a componentes desde código

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);
	}
}
Descargar ejemplo acceso a componentes

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 usoobjeto.transform.RecursiveFindChild("numero")
Descargar ejemplo acceso a componentes 2
icono de mandar un mailPreguntame lo que quieras!
Pablo Monteserín
contacta conmigoPablo Monteserín

El servicio de resolución de dudas técnicas es sólo para los usuarios premium. Si tienes cualquier otra duda, usa el formulario de contacto. ¡Gracias!