En aquest tema, aprendrem com programar l'àudio en Unity utilitzant scripts en C#. Explorarem com reproduir clips d'àudio, controlar el volum, i gestionar l'àudio en resposta a esdeveniments del joc.
Conceptes Clau
- AudioSource: Component que reprodueix clips d'àudio.
- AudioClip: Fitxer d'àudio que es pot reproduir.
- AudioListener: Component que escolta l'àudio en l'escena, normalment associat a la càmera principal.
- Metodes d'AudioSource:
Play(),Pause(),Stop(), etc.
Exemples Pràctics
- Configuració Bàsica
Primer, assegurem-nos que tenim un AudioSource i un AudioClip en el nostre projecte.
-
Afegir un AudioSource:
- Selecciona l'objecte de joc al qual vols afegir l'àudio.
- A la finestra de l'Inspector, fes clic a "Add Component" i selecciona "AudioSource".
-
Assignar un AudioClip:
- Arrossega el fitxer d'àudio des de la finestra del Projecte fins al camp
AudioClipdelAudioSourceen l'Inspector.
- Arrossega el fitxer d'àudio des de la finestra del Projecte fins al camp
- Reproduir Àudio amb Scripts
Crearem un script per controlar la reproducció de l'àudio.
Script: AudioController.cs
using UnityEngine;
public class AudioController : MonoBehaviour
{
public AudioSource audioSource;
public AudioClip audioClip;
void Start()
{
// Assignar l'AudioClip a l'AudioSource
audioSource.clip = audioClip;
}
void Update()
{
// Reproduir l'àudio quan es prem la tecla espai
if (Input.GetKeyDown(KeyCode.Space))
{
PlayAudio();
}
// Pausar l'àudio quan es prem la tecla P
if (Input.GetKeyDown(KeyCode.P))
{
PauseAudio();
}
// Aturar l'àudio quan es prem la tecla S
if (Input.GetKeyDown(KeyCode.S))
{
StopAudio();
}
}
void PlayAudio()
{
if (!audioSource.isPlaying)
{
audioSource.Play();
}
}
void PauseAudio()
{
if (audioSource.isPlaying)
{
audioSource.Pause();
}
}
void StopAudio()
{
if (audioSource.isPlaying)
{
audioSource.Stop();
}
}
}
- Controlar el Volum
Podem ajustar el volum de l'àudio mitjançant el component AudioSource.
Script: VolumeController.cs
using UnityEngine;
public class VolumeController : MonoBehaviour
{
public AudioSource audioSource;
void Update()
{
// Ajustar el volum amb les tecles de fletxa amunt i avall
if (Input.GetKey(KeyCode.UpArrow))
{
audioSource.volume += 0.01f;
}
if (Input.GetKey(KeyCode.DownArrow))
{
audioSource.volume -= 0.01f;
}
// Assegurar que el volum es manté entre 0 i 1
audioSource.volume = Mathf.Clamp(audioSource.volume, 0f, 1f);
}
}Exercicis Pràctics
Exercici 1: Reproduir Àudio en Resposta a un Esdeveniment
Crea un script que reprodueixi un clip d'àudio quan el jugador col·lisioni amb un objecte específic.
Solució
using UnityEngine;
public class CollisionAudio : MonoBehaviour
{
public AudioSource audioSource;
public AudioClip collisionClip;
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Player")
{
audioSource.PlayOneShot(collisionClip);
}
}
}Exercici 2: Crear un Controlador de Música de Fons
Crea un script que reprodueixi música de fons en bucle i permeti ajustar el volum amb les tecles de fletxa.
Solució
using UnityEngine;
public class BackgroundMusicController : MonoBehaviour
{
public AudioSource musicSource;
void Start()
{
musicSource.loop = true;
musicSource.Play();
}
void Update()
{
if (Input.GetKey(KeyCode.UpArrow))
{
musicSource.volume += 0.01f;
}
if (Input.GetKey(KeyCode.DownArrow))
{
musicSource.volume -= 0.01f;
}
musicSource.volume = Mathf.Clamp(musicSource.volume, 0f, 1f);
}
}Errors Comuns i Consells
- No Assignar l'AudioSource o l'AudioClip: Assegura't que els camps
AudioSourceiAudioClipestan assignats en l'Inspector. - Volum Fora de Rang: Utilitza
Mathf.Clampper assegurar que el volum es manté entre 0 i 1. - Reproduir Àudio Repetidament: Utilitza
audioSource.isPlayingper evitar reproduir l'àudio repetidament si ja està sonant.
Conclusió
En aquesta secció, hem après com programar l'àudio en Unity utilitzant scripts en C#. Hem vist com reproduir, pausar i aturar clips d'àudio, així com ajustar el volum. Aquests conceptes són fonamentals per crear una experiència de joc immersiva amb àudio dinàmic. En el següent tema, explorarem l'àudio 3D i el so espacial per afegir una nova dimensió a l'àudio del nostre joc.
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
