Resumen

¿Cómo crear un sistema de UI en Unity?

Crear interfaces gráficas en Unity puede parecer un desafío, pero con un poco de programación y diseño es posible lograr transiciones agradables y funcionales. En esta clase, nos centraremos en desarrollar un sistema de UI que facilite la interacción con los jugadores al mostrar pantallas asociadas a diferentes estados del juego, como el inicio o el fin de una partida. Únete a mí y descubre cómo conectar tus scripts y crear una experiencia de usuario atractiva en Unity.

¿Qué pasos seguir para establecer eventos en Unity?

En primer lugar, debemos asegurarnos de que nuestra lógica de eventos en Unity esté bien configurada. Uno de los eventos más potentes es el Unity Event, que nos permite que distintas secciones del código escuchen y respondan adecuadamente a los cambios de estado del juego.

  1. Edita el Game Manager:

    • Agrega un nuevo evento de Unity con parámetros. Esto se hace añadiendo Public Unity Event On Game State Updated seguido del tipo de parámetro, que en este caso es Game State.

    • Modifica la función de Update para activar este evento cuando el juego cambie de estado, por ejemplo, cuando se pierda una partida.

    if (currentState == GameState.GameOver) {
        OnGameStateUpdated?.Invoke(currentState);
    }
    

    Esto permite que otros scripts se suscriban al evento y actuen en consecuencia.

¿Cómo crear y configurar una pantalla de interfaz UI?

Una vez que solucionamos la parte de eventos, lo siguiente es crear una pantalla base de UI que reaccione cuando cambie el estado del juego.

  1. Crea un script de C# para UIScreen:

    • Crea un nuevo script llamado UIScreen donde definirás las propiedades necesarias como RectTransform, CanvasGroup y la propiedad GameState.
    public RectTransform containerRect;
    public CanvasGroup containerCanvas;
    public Image background;
    public GameManager.GameState visibleState;
    public float transitionTime;
    
  2. Subscríbete al evento desde el script de UIScreen:

    • Dentro de la función Start, suscribe el script al evento OnGameStateUpdated.
    void Start() {
        GameManager.instance.OnGameStateUpdated.AddListener(GameStateUpdated);
    }
    
  3. Define el comportamiento inicial y sus transiciones:

    • Implementa la función GameStateUpdated para mostrar u ocultar pantallas según el estado del juego.
    void GameStateUpdated(GameManager.GameState newState) {
        if (newState == visibleState) {
            ShowScreen();
        } else {
            HideScreen();
        }
    }
    

¿Cómo implementar animaciones en Unity?

Las transiciones visuales mejoran la experiencia de usuario, y usando DOTween, se pueden realizar animaciones fluidas en las interfaces.

  1. Configura animaciones en ShowScreen y HideScreen:

    • ShowScreen: Activa elementos visuales y anima propiedades como opacidad y posición.
    void ShowScreen() {
        background.enabled = true;
        containerCanvas.alpha = 0;
        containerRect.anchoredPosition = new Vector2(0, 100);
        containerCanvas.DOFade(1, transitionTime);
        containerRect.DOAnchorPos(Vector2.zero, transitionTime);
    }
    
    • HideScreen: Se enfoca en las animaciones inversas y termina desactivando los elementos.
    void HideScreen() {
        containerCanvas.DOFade(0, transitionTime * 0.5f);
        containerRect.DOAnchorPos(new Vector2(0, -100), transitionTime * 0.5f).OnComplete(() => {
            background.enabled = false;
            containerRect.gameObject.SetActive(false);
        });
    }
    

Con estas configuraciones, has implementado un sistema efectivo que muestra y oculta pantallas basándose en el estado del juego. Te animamos a probar y practicar estos pasos en Unity para refinar tus habilidades en el desarrollo de interfaces gráficas. ¡Adelante con tu aprendizaje!