2021年3月14日 星期日

adaptive music & game audio 筆記 6 - Fmod 與 Unity 的串接

為了使用 Fmod 作為 Middleware 來為 Unity 執行較為複雜的聲音播放,故需使用以下步驟:

1. 安裝 Unity,取得授權,開一新檔案,並在 asset store 搜尋 Fmod,下載之後,導入 Unity 中。此時 Unity 的下方 console 就會出現錯誤訊息,因為找不到 Fmod 的專案路徑。

2. 開啟 Fmod 並指定一個檔案夾進行存檔,再到 Unity 中的 Fmod 選單,選取 Edit Settings,則會在 Unity 的 Inspector 中出現 Fmod 的相關設定選項,在此選項中將「Studio Project Path」指向 Fmod 存檔的路徑,找到副檔名為 fspro 的檔案。

4. 承上,此時雖完成 Fmod 與 Unity 的初步連結,但卻會顯示找不到 Fmod 的 Bank,因此需再到 Fmod 中的 File 選單下,選擇 Build (或使用快捷鍵 F7),來建立 Bank 檔案。Bank 是用來存放 Fmod 的聲音等相關元件,建立成 Unity 可以讀取的形式,以供 Unity 直接進行使用。

5. 完成 Fmod 與 Unity 的串接之後,可以進行簡單的測試,步驟如下:

(1) 在 unity 中建立一個 game object,並且在 add component 中加入 Fmod 的元件,選擇 Fmod Studio Event Emitter。

(2) 至 Fmod 中,按右鍵 new event 及 new 2D timeline,修改 Event 的名稱,並將外部的聲音檔案拉到軌道中。並在左方介面中,按滑鼠右鍵選擇 assign to bank (選 master),按 F7 建立 bank,並進行存檔。 

(3) 在 Fmod 的事件中,按滑鼠右鍵,選擇 copy path,再將這個路徑貼到 Unity 的 inspector 的 Studio Event Emitter 的 Event 的路徑設定中。此時,Initial Parameter Value 底下的 add values 選單也會出現原本在 Fmod 文件中自己增加的參數。

(4) 至 Unity 中,將 (1) 所建立的 game object 之Inspector 中的 Play Event 選成 Object Start,表示該 game object 開始存在時,FMOD 的音樂就要開始播放。此外,並需將 event 選項設定為在 Fmod 中所命名的那個事件。 

6. 按 Unity 的 play 鍵進行測試。 



使用 Unity 2019 需注意的事項:
  • Fmod studio 的版本必須要跟 Fmod for Unity 的版本一致,目前雖然已經可以由 Unity 的 Asset Store 直接導入 Fmod 的 Assets,但是相容性可能會發生問題。最保險的方式是直接至 Fmod 官網安裝 Unity 認證完成(Unity Verified)的 Fmod Studio 應用軟體、以及要被載入 Unity 的Unitypackage。本文撰寫時,測試成功的版本為 Fmod Studio 2.0010 與fmodstudio20010.unitypackage,兩者版本需一致。現有直接從 Unity 的 Asset Store 導入 Fmod 的方式之版本,似乎仍有版本不相容的問題。 
  • 正常的情況下,Fmod 的檔案資料夾中的 Build 目錄中會有 bank 檔案,同一份檔案還會被複製到 Unity 檔案資料夾的 Assets / StreamingAssets 資料夾下。然而,使用 Unity Asset Store 載入的 Fmod,目前仍會有找不到 Fmod 的 Bank 的問題。
  • 此外,在 Unity 執行遊戲時,若出現訊息顯示 sample rate 必須為 44100Hz 的錯誤訊息,則可以直接在 Unity / FMOD / Edit Setting 的 inspector 下拉選單中的 Play in Edit Setting 修改取樣頻率為 44100Hz 即可。
  • 若在 Unity 中有找不到 FMOD 的 Event 的錯誤訊息,則需要刪除 Unity 專案資料夾底下的 Assets /StreamingAssets 整的檔案夾,並刪除 FMOD 專案資料夾底下的 Build 資料夾,此錯誤訊息是因為軟體版本有更新所造成。
  • 若使用 [FMODUnity.EventRef] 的用法來簡化 Event Path,也可能造成相同問題,此時則必須手動至掛載該程式碼的物件之 inspector 中, 點選放大鏡 icon 去從下拉式選單來選擇想要播放的聲音檔案。
  • 執行 3D 聲音時,main camera 必須掛上 FMOD listener 元件。
  • Unity 2019 或 2020 在 import package 的選項中,沒有 standards assets,而必須自己至 asset store 下載安裝與載入,載入完成後會出現在 project window 的 assets 目錄下,然而同時也會出現錯誤訊息,需要在錯誤訊息 "GUIText is obsolete" 點兩下,進入 visual studio 進行下列些改:GuiText 改成 Text,並多加上一行指令,如下圖所示:

至 asset store 下載 standard assets:

從 console 的錯誤訊息 "GUIText is obsolete" 點兩下修改程式碼:

完成修改後就可以使用 standard assets。

沒有留言:

張貼留言