Introducció
En Unity, MonoBehaviour
és la classe base de la qual deriven tots els scripts. Aquesta classe proporciona una sèrie de mètodes i propietats que permeten interactuar amb el motor de Unity. Entendre com funciona MonoBehaviour
és fonamental per a qualsevol desenvolupador que vulgui crear comportaments personalitzats per als seus objectes de joc.
Conceptes Clau
- Què és MonoBehaviour?
MonoBehaviour
és una classe base que permet que els scripts interactuïn amb el motor de Unity. Heretar d'aquesta classe permet accedir a una sèrie de mètodes i propietats que són essencials per al desenvolupament de jocs.
- Mètodes Principals de MonoBehaviour
Els mètodes més comuns de MonoBehaviour
inclouen:
Start()
: S'executa una vegada quan l'script s'inicialitza.Update()
: S'executa una vegada per fotograma.FixedUpdate()
: S'executa a intervals fixos de temps, ideal per a la física.LateUpdate()
: S'executa després deUpdate()
, útil per a càmeres i altres elements que necessiten actualitzar-se després de tots els altres objectes.
- Propietats i Mètodes Addicionals
A més dels mètodes esmentats, MonoBehaviour
proporciona altres funcionalitats com:
gameObject
: Referència a l'objecte de joc al qual està adjuntat l'script.transform
: Referència al componentTransform
de l'objecte de joc.enabled
: Permet habilitar o deshabilitar l'script.
Exemple Pràctic
A continuació, es mostra un exemple pràctic d'un script que utilitza alguns dels mètodes principals de MonoBehaviour
.
using UnityEngine; public class ExampleScript : MonoBehaviour { // Aquest mètode s'executa una vegada quan l'script s'inicialitza void Start() { Debug.Log("L'script s'ha inicialitzat!"); } // Aquest mètode s'executa una vegada per fotograma void Update() { // Mou l'objecte cap a la dreta cada fotograma transform.Translate(Vector3.right * Time.deltaTime); } // Aquest mètode s'executa a intervals fixos de temps void FixedUpdate() { // Aquí podríem afegir codi relacionat amb la física } // Aquest mètode s'executa després de Update() void LateUpdate() { // Aquí podríem afegir codi que necessiti actualitzar-se després de tots els altres objectes } }
Explicació del Codi
Start()
: Aquest mètode s'executa una vegada quan l'script s'inicialitza. En aquest cas, simplement mostra un missatge a la consola.Update()
: Aquest mètode s'executa una vegada per fotograma. En aquest exemple, mou l'objecte cap a la dreta cada fotograma.FixedUpdate()
: Aquest mètode s'executa a intervals fixos de temps. És ideal per a codi relacionat amb la física.LateUpdate()
: Aquest mètode s'executa després deUpdate()
. És útil per a càmeres i altres elements que necessiten actualitzar-se després de tots els altres objectes.
Exercicis Pràctics
Exercici 1: Moviment Bàsic
Crea un script que faci que un objecte es mogui cap amunt quan es prem la tecla "W" i cap avall quan es prem la tecla "S".
Solució
using UnityEngine; public class MoveUpDown : MonoBehaviour { void Update() { if (Input.GetKey(KeyCode.W)) { transform.Translate(Vector3.up * Time.deltaTime); } if (Input.GetKey(KeyCode.S)) { transform.Translate(Vector3.down * Time.deltaTime); } } }
Exercici 2: Rotació
Crea un script que faci que un objecte es giri a l'esquerra quan es prem la tecla "A" i a la dreta quan es prem la tecla "D".
Solució
using UnityEngine; public class RotateLeftRight : MonoBehaviour { void Update() { if (Input.GetKey(KeyCode.A)) { transform.Rotate(Vector3.up, -90 * Time.deltaTime); } if (Input.GetKey(KeyCode.D)) { transform.Rotate(Vector3.up, 90 * Time.deltaTime); } } }
Errors Comuns i Consells
Error Comú: No utilitzar Time.deltaTime
Quan es treballa amb Update()
, és important utilitzar Time.deltaTime
per assegurar-se que el moviment és consistent independentment de la velocitat de fotogrames.
Consell: Utilitzar FixedUpdate()
per a Física
Quan es treballa amb física, és millor utilitzar FixedUpdate()
en lloc de Update()
per assegurar-se que els càlculs es fan a intervals fixos de temps.
Conclusió
Entendre MonoBehaviour
és essencial per a qualsevol desenvolupador de Unity. Aquesta classe proporciona una base sòlida per crear comportaments personalitzats i interactuar amb el motor de Unity. Amb els conceptes i exemples pràctics presentats en aquesta secció, hauríeu de tenir una bona comprensió de com utilitzar MonoBehaviour
en els vostres projectes.
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