很難想像一個遊戲程式如果沒有音樂的話,會有多麼無趣。好的背景音樂和音效對於一個遊戲程式來說有畫龍點晴之妙,甚至有些其實不太好玩的遊戲,也會因為有歡樂的背景音樂而讓遊戲變得好玩起來。
在Unity中要使用音樂其實非常簡單,首先,要去找一些免費好聽的背景音樂,在Asset Store中就有許多,以下是其中一個:
https://assetstore.unity.com/packages/audio/music/adventure-music-and-sfx-221545
在新版的Unity中,只要到Package Manager介面中搜尋Adventure Music and SFX應該就可以找得到,如下所示:
選擇Download以及import之後,就可以在Asset中找到WhatSoundNice資料夾,其中就有許多有趣好聽的音樂檔可以使用。
為了讓Unity的世界中可以輸出音樂,請在現有的場景中加入AudioSource,如下所示:
接著,在AudioSource的設定頁面中,把想要播放的音樂檔案拖曳進去下圖中上方箭頭所指的地方,同時下方箭頭用來決定是否要一開始執行程式的時候就播放此音樂。
然後,在畫面中建立兩個UI的Button,如下所示:
再來是建立一段C#程式碼,此程式碼可以把它命名為MusicController,內容如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
public class MusicController : MonoBehaviour
{
public AudioSource BKMusic = null;
void Start()
{
BKMusic.Stop();
}
public void PlayMusic()
{
BKMusic.Play();
}
public void StopMusic()
{
BKMusic.Stop();
}
}
把此段程式碼拖曳到AudioSource,即可在其控制頁面中看到這一段程式碼的BKMusic的AudioSource欄位,此時再把AudioSource拖曳進去即可,如下所示:
之後,再把按鈕的OnClick事件分別指向AudioSource的MusicController的PlayMusic()和StopMusic()函式,最後執行程式就可以使用左下角的按鈕來控制音樂的播放了。
如果我們想要播放的音樂不只一首,那麼就需要引入AudioClip物件,程式碼修改如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
public class MusicController : MonoBehaviour
{
public AudioSource BKMusic = null;
public AudioClip[] MusicTracks = null;
private int CurrentTrack = 0;
void Start()
{
BKMusic.Stop();
}
public void PlayMusic()
{
BKMusic.Play();
}
public void StopMusic()
{
BKMusic.Stop();
}
public void NextMusic()
{
if(++CurrentTrack>=MusicTracks.Length)
CurrentTrack = 0;
BKMusic.Stop();
BKMusic.clip = MusicTracks[CurrentTrack];
BKMusic.Play();
}
}
在程式中我們多建立了一個公用的AudioClip[]陣列物件,此物件的內容可以在MusicController的設定頁面中操作,加入所有想要播放的音樂。同時我們也建立了一個NextMusic函式用來切換音樂檔案的播放,此函式可以讓Next按鈕的OnClick事件來加以設定,如下所示:
下圖則是AudioClip陣列的設定: