En aquest tema, aprendrem com crear scripts en Unity utilitzant C# i com adjuntar aquests scripts als objectes de joc dins de l'editor de Unity. Els scripts són una part fonamental del desenvolupament de jocs en Unity, ja que permeten definir el comportament dels objectes de joc.
- Creant un Script
Passos per crear un script:
- Obre el teu projecte de Unity.
- Selecciona la carpeta "Assets" a la finestra del "Project".
- Crea una nova carpeta anomenada "Scripts" per organitzar els teus scripts (opcional però recomanat).
- Clica amb el botó dret dins de la carpeta "Scripts" i selecciona
Create > C# Script
. - Dóna un nom al teu script, per exemple,
PlayerController
.
Exemple de codi:
using UnityEngine; public class PlayerController : MonoBehaviour { // Variables públiques poden ser ajustades des de l'Inspector public float speed = 5.0f; // Aquest mètode s'executa una vegada quan el script s'inicialitza void Start() { Debug.Log("PlayerController script attached and started!"); } // Aquest mètode s'executa una vegada per frame void Update() { // Moviment bàsic del jugador float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); transform.Translate(movement * speed * Time.deltaTime); } }
Explicació del codi:
using UnityEngine;
: Importa la biblioteca de Unity necessària per accedir a les funcionalitats bàsiques.public class PlayerController : MonoBehaviour
: Defineix una nova classePlayerController
que hereta deMonoBehaviour
, la classe base per a tots els scripts de Unity.public float speed = 5.0f;
: Declara una variable públicaspeed
que pot ser ajustada des de l'Inspector.void Start()
: Mètode que s'executa una vegada quan el script s'inicialitza.void Update()
: Mètode que s'executa una vegada per frame, ideal per a la lògica de moviment i altres actualitzacions contínues.Input.GetAxis("Horizontal")
iInput.GetAxis("Vertical")
: Captura les entrades de l'usuari per al moviment horitzontal i vertical.transform.Translate(movement * speed * Time.deltaTime)
: Mou l'objecte de joc basat en les entrades de l'usuari.
- Adjuntant un Script a un Objecte de Joc
Passos per adjuntar un script:
- Selecciona l'objecte de joc al qual vols adjuntar el script des de la jerarquia.
- Arrossega i deixa anar el script
PlayerController
des de la carpeta "Scripts" a la finestra de l'Inspector de l'objecte de joc. - Alternativament, pots clicar el botó "Add Component" a la finestra de l'Inspector, buscar
PlayerController
i seleccionar-lo.
Verificació:
- Un cop adjuntat, el script apareixerà com un component a la finestra de l'Inspector de l'objecte de joc.
- Pots ajustar la variable
speed
directament des de l'Inspector.
Exercici Pràctic
Objectiu:
Crea un script que permeti a un objecte de joc moure's cap amunt i cap avall utilitzant les tecles de fletxa.
Passos:
- Crea un nou script anomenat
VerticalMover
. - Implementa el següent codi:
using UnityEngine; public class VerticalMover : MonoBehaviour { public float speed = 5.0f; void Update() { float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(0.0f, moveVertical, 0.0f); transform.Translate(movement * speed * Time.deltaTime); } }
- Adjunta el script a un objecte de joc, com ara un cub.
- Executa el joc i utilitza les tecles de fletxa amunt i avall per moure l'objecte.
Solució:
El codi anterior permetrà que l'objecte de joc es mogui cap amunt i cap avall en resposta a les tecles de fletxa. Assegura't que l'objecte de joc tingui un component Rigidbody
si vols que la física afecti el moviment.
Errors Comuns i Consells
- Error: El script no apareix a l'Inspector: Assegura't que el nom del fitxer del script coincideixi exactament amb el nom de la classe dins del script.
- Error: Moviment no funciona correctament: Verifica que el component
Rigidbody
estigui configurat correctament i que no hi hagi altres scripts que interfereixin amb el moviment. - Consell: Utilitza
Debug.Log
per imprimir missatges a la consola i ajudar a depurar el teu codi.
Conclusió
En aquesta secció, hem après com crear scripts en Unity utilitzant C# i com adjuntar aquests scripts als objectes de joc. Els scripts són essencials per definir el comportament dels objectes de joc i permeten una gran flexibilitat en el desenvolupament de jocs. En la propera secció, explorarem més a fons el component MonoBehaviour
i com utilitzar-lo per crear comportaments més complexos.
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