Paneles activados y desactivados
Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 9 de 56.
Un panel es una imagen de la UI, a menudo extendida por toda la pantalla, con botones y textos como elementos secundarios. SetActive(false) en el panel lo oculta junto con todo lo que contiene, y no se puede hacer clic en sus botones mientras está oculto. Mientras está visible, su imagen recibe los clics destinados a cualquier elemento que esté debajo, así que no se pueden pulsar los botones que quedan detrás de un panel a pantalla completa. Este mapa se abre desde un botón en la esquina y se cierra desde un botón del mapa:
public GameObject mapPanel;
public Button mapButton;
public Button closeButton;
void Start()
{
mapPanel.SetActive(false);
mapButton.onClick.AddListener(() => mapPanel.SetActive(true));
closeButton.onClick.AddListener(() => mapPanel.SetActive(false));
}Los paneles son más fáciles de editar mientras están visibles, así que las escenas suelen guardarse con ellos activados, y Start() los oculta. Mantén el script que abre un panel fuera de ese panel: un GameObject inactivo no ejecuta Start() ni Update(), así que un script en un panel guardado oculto nunca configuraría sus botones. El Canvas o un objeto administrador del juego, que permanecen activos, son buenos lugares para colocarlo. mapPanel.activeSelf indica si el panel está activado, así que mapPanel.SetActive(!mapPanel.activeSelf) alterna su estado.
Desafío
FácilEl juego del prado necesita un menú. Menu.cs está en el Canvas (HUD), y la escena conecta sus campos. Ambos paneles están activos en la escena, así que son fáciles de editar. Escribe Start() para que:
- Cuando empiece el juego,
menuPanelyhelpPanelestén ocultos. menuButtonabra el panel del menú, y suresumeButtonlo cierre.helpButton, en el panel del menú, sustituya el panel del menú por el panel de ayuda, ybackButton, en el panel de ayuda, vuelva al menú.- Mientras el menú esté abierto, el jugador no pueda caminar: el script
moverse desactiva cuando se abre el menú y se vuelve a activar cuando Resume lo cierra.
Pulsa Play, camina, abre el menú y su ayuda; después, pulsa Check.
Pruébalo tú mismo
using UnityEngine;
using UnityEngine.UI;
public class Menu : MonoBehaviour
{
public GameObject menuPanel;
public GameObject helpPanel;
public Button menuButton;
public Button resumeButton;
public Button helpButton;
public Button backButton;
public PlayerMover mover;
void Start()
{
// Oculta ambos paneles y luego conecta Menu, Resume, Help y Back
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Creación de juegos reales
1Texto en pantalla
Canvas y textoMuestra la puntuaciónDa formato a los númerosUn temporizador de cuenta regresivaRepaso: velocímetro4Escenas y niveles
Cargar una escenaReiniciar el nivelSiguiente nivelConservar entre escenasRepaso: selección de nivel10Proyecto: plataformas 3D
El recorridoPlataformas móviles2Botones y pantallas
Botones y onClickLambdasConectar en el InspectorPaneles activados y desactivadosBarras de saludRepaso: tienda de mejoras5Guardar con PlayerPrefs
Guardar un númeroCargar con un valor predeterminadoPuntuación más altaGuardar ajustesRepaso: monedas en el banco3El gestor del juego
Un solo script ejecuta el juegoEl SingletonEstados del juegoActivar el estadoRepaso: gestor de rondas6Proyecto: corredor infinito
Tres carrilesObstáculos por delante9El nuevo sistema de entrada
Dos sistemas de entradaTeclado y ratónPulsado en este fotogramaAcciones de entradaRepaso: cambio de entrada