在Unity中使用背景音樂

很難想像一個遊戲程式如果沒有音樂的話,會有多麼無趣。好的背景音樂和音效對於一個遊戲程式來說有畫龍點晴之妙,甚至有些其實不太好玩的遊戲,也會因為有歡樂的背景音樂而讓遊戲變得好玩起來。

在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陣列的設定:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *