Paneles activados y desactivados
Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 9 de 60.
Un panel es una imagen de interfaz de usuario que suele extenderse por toda la pantalla y tiene 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 se muestra, su imagen recibe los clics destinados a cualquier elemento que haya debajo, por lo que no se pueden pulsar los botones situados detrás de un panel que ocupa toda la pantalla. Este mapa se abre con un botón en una esquina y se cierra con un botón en el 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));
}Es más fácil editar los paneles mientras se muestran, así que a menudo las escenas se guardan con ellos activos, 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 conectarí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á activo, así que mapPanel.SetActive(!mapPanel.activeSelf) alterna su estado.
Desafío
FácilAñade un menú al juego del prado: escribe Start() en Menu.cs.
- Oculta
menuPanelyhelpPanelconSetActive(false). menuButtonmuestra el menú y establecemover.enabled = false;resumeButtonlo oculta y establecemover.enabled = true.helpButtonoculta el menú y muestra la ayuda;backButtonhace lo contrario.
Pulsa «Jugar» y abre el menú: el jugador no puede caminar hasta pulsar «Reanudar». Después, pulsa «Comprobar».
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
}
}
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ímetro2Botones 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 sin fin
Tres carrilesObstáculos por delante9El nuevo sistema de entrada
Dos sistemas de entradaTeclado y ratónPulsado en este fotogramaAcciones de entradaRepaso: cambio de entradaPractica por tu cuenta: Playground de Unity