En aquest tema, aprendrem com gestionar esdeveniments d'interfície d'usuari (UI) en Unity. Els esdeveniments de UI són fonamentals per crear una experiència interactiva i dinàmica per als usuaris. Explorarem com detectar i respondre a diferents tipus d'esdeveniments com clics de botons, canvis en sliders, i molt més.
Conceptes Clau
- Esdeveniments de UI: Accions que l'usuari realitza sobre elements de la interfície, com clics, moviments del ratolí, i canvis de valor.
- Event System: El sistema de Unity que gestiona els esdeveniments de UI.
- Components d'UI: Elements com botons, sliders, i altres que poden generar esdeveniments.
Components Necessaris
- Canvas: El contenidor principal per a tots els elements de UI.
- Event System: Necessari per gestionar els esdeveniments de UI.
- Elements de UI: Botons, sliders, etc.
Creant un Projecte de UI Bàsic
Pas 1: Configuració del Canvas i Event System
-
Crear un Canvas:
- Aneu a
GameObject > UI > Canvas. - Això crearà un Canvas i un Event System automàticament si no existeixen.
- Aneu a
-
Verificar l'Event System:
- Assegureu-vos que hi ha un
Event Systemen la jerarquia. Si no, creeu-ne un anant aGameObject > UI > Event System.
- Assegureu-vos que hi ha un
Pas 2: Afegir Elements de UI
-
Afegir un Botó:
- Aneu a
GameObject > UI > Button. - Això afegirà un botó al Canvas.
- Aneu a
-
Afegir un Slider:
- Aneu a
GameObject > UI > Slider. - Això afegirà un slider al Canvas.
- Aneu a
Pas 3: Gestionar Esdeveniments de UI
Exemple 1: Gestionar Clics de Botó
- Crear un Script per al Botó:
- Creeu un nou script C# anomenat
ButtonHandler.csi adjunteu-lo a un GameObject (pot ser el mateix Canvas).
- Creeu un nou script C# anomenat
using UnityEngine;
using UnityEngine.UI;
public class ButtonHandler : MonoBehaviour
{
public Button myButton;
void Start()
{
myButton.onClick.AddListener(OnButtonClick);
}
void OnButtonClick()
{
Debug.Log("Botó clicat!");
}
}- Assignar el Botó al Script:
- Arrossegueu el botó des de la jerarquia fins al camp
My Buttonen l'inspector del scriptButtonHandler.
- Arrossegueu el botó des de la jerarquia fins al camp
Exemple 2: Gestionar Canvis en un Slider
- Crear un Script per al Slider:
- Creeu un nou script C# anomenat
SliderHandler.csi adjunteu-lo a un GameObject (pot ser el mateix Canvas).
- Creeu un nou script C# anomenat
using UnityEngine;
using UnityEngine.UI;
public class SliderHandler : MonoBehaviour
{
public Slider mySlider;
void Start()
{
mySlider.onValueChanged.AddListener(OnSliderValueChanged);
}
void OnSliderValueChanged(float value)
{
Debug.Log("Valor del slider: " + value);
}
}- Assignar el Slider al Script:
- Arrossegueu el slider des de la jerarquia fins al camp
My Slideren l'inspector del scriptSliderHandler.
- Arrossegueu el slider des de la jerarquia fins al camp
Exercicis Pràctics
Exercici 1: Afegir un Toggle i Gestionar el seu Estat
-
Afegir un Toggle:
- Aneu a
GameObject > UI > Toggle.
- Aneu a
-
Crear un Script per al Toggle:
- Creeu un nou script C# anomenat
ToggleHandler.csi adjunteu-lo a un GameObject.
- Creeu un nou script C# anomenat
using UnityEngine;
using UnityEngine.UI;
public class ToggleHandler : MonoBehaviour
{
public Toggle myToggle;
void Start()
{
myToggle.onValueChanged.AddListener(OnToggleValueChanged);
}
void OnToggleValueChanged(bool isOn)
{
Debug.Log("Toggle està " + (isOn ? "activat" : "desactivat"));
}
}- Assignar el Toggle al Script:
- Arrossegueu el toggle des de la jerarquia fins al camp
My Toggleen l'inspector del scriptToggleHandler.
- Arrossegueu el toggle des de la jerarquia fins al camp
Exercici 2: Crear un Sistema de Menú Simple
-
Crear un Menú amb Botons:
- Creeu diversos botons per representar diferents opcions de menú.
-
Gestionar els Clics dels Botons:
- Creeu un script que gestioni els clics de cada botó i mostri un missatge diferent per a cada opció.
using UnityEngine;
using UnityEngine.UI;
public class MenuHandler : MonoBehaviour
{
public Button playButton;
public Button settingsButton;
public Button exitButton;
void Start()
{
playButton.onClick.AddListener(OnPlayButtonClick);
settingsButton.onClick.AddListener(OnSettingsButtonClick);
exitButton.onClick.AddListener(OnExitButtonClick);
}
void OnPlayButtonClick()
{
Debug.Log("Play clicat!");
}
void OnSettingsButtonClick()
{
Debug.Log("Settings clicat!");
}
void OnExitButtonClick()
{
Debug.Log("Exit clicat!");
}
}- Assignar els Botons al Script:
- Arrossegueu cada botó des de la jerarquia fins als camps corresponents en l'inspector del script
MenuHandler.
- Arrossegueu cada botó des de la jerarquia fins als camps corresponents en l'inspector del script
Errors Comuns i Consells
- No Assignar els Elements de UI: Assegureu-vos que els elements de UI estan correctament assignats als camps públics dels scripts.
- No Afegir Listeners: Recordeu afegir listeners per als esdeveniments en el mètode
StartoAwake. - Depuració: Utilitzeu
Debug.Logper verificar que els esdeveniments es gestionen correctament.
Conclusió
En aquesta secció, hem après com gestionar esdeveniments de UI en Unity, incloent clics de botons i canvis en sliders. Hem creat scripts per gestionar aquests esdeveniments i hem practicat amb exercicis pràctics. Ara estem preparats per crear interfícies d'usuari més complexes i interactives en els nostres projectes de Unity. En la següent secció, explorarem com crear menús i HUDs per millorar encara més la nostra interfície d'usuari.
Curs de Unity
Mòdul 1: Introducció a Unity
- Introducció a Unity i Instal·lació
- Visió General de la Interfície de Unity
- Creant el Teu Primer Projecte
- Objectes de Joc Bàsics i Components
Mòdul 2: Programació Bàsica en Unity
- Introducció a C# per a Unity
- Creant i Adjuntant Scripts
- Entenent MonoBehaviour
- Gestió Bàsica d'Entrades
Mòdul 3: Treballant amb Actius
- Important i Gestionant Actius
- Utilitzant la Botiga d'Actius
- Creant i Utilitzant Prefabs
- Animació Bàsica
Mòdul 4: Física i Col·lisions
- Introducció a la Física de Unity
- Rigidbody i Col·liders
- Detecció Bàsica de Col·lisions
- Utilitzant Materials de Física
Mòdul 5: Interfície d'Usuari (UI)
- Introducció a la UI de Unity
- Creant i Personalitzant Elements de UI
- Gestió d'Esdeveniments de UI
- Creant Menús i HUDs
Mòdul 6: Àudio en Unity
- Introducció a l'Àudio en Unity
- Important i Utilitzant Clips d'Àudio
- Programació Bàsica d'Àudio
- Àudio 3D i So Espacial
Mòdul 7: Programació Avançada
- Conceptes Avançats de C# per a Unity
- Coroutines i Programació Asíncrona
- Objectes Scriptables
- Editors Personalitzats i Gizmos
Mòdul 8: Física Avançada i IA
- Tècniques Avançades de Física
- Pathfinding i Navegació
- Programació Bàsica d'IA
- Màquines d'Estats i Arbres de Comportament
Mòdul 9: Optimització i Rendiment
- Tècniques de Perfilat i Optimització
- Gestió de Memòria
- Reduint Draw Calls
- Optimitzant Física i Col·lisions
