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 System
en 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.cs
i 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 Button
en 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.cs
i 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 Slider
en 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.cs
i 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 Toggle
en 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
Start
oAwake
. - Depuració: Utilitzeu
Debug.Log
per 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