バージョン
Wwise Unity Integration Documentation
|
Unity AddressablesはAssetBundlesをベースにつくられたシステムで、アセットをプレイヤーとは別にパッケージングするためのものです。 追加のアセットを外部サーバに格納することのできるDLCなどの用途には、特に便利です。
もし、まだAddressablesを使い始めたばかりで慣れていない場合は、 公式ドキュメンテーション や 学習リソース などを読むと良いでしょう。
Wwise Unity Addressablesパッケージを使い始めるには、ここからスタートすると良いでしょう:
以下のセクションで、Wwise Addressablesパッケージの機能を説明します:
Addressablesシステムは、以下の特殊性があるので、注意してください:
Wwise Addressablesサンプル でWwise Addressablesアセットの管理を助けるために設計されたコードサンプルの追加情報を提供します。
作成された .bnk ファイルや .wem ファイルは、WwiseBankImporterクラスやWwiseStreamingAssetImporterクラスによって処理されます。 このスクリプトで、ファイルのバイナリデータの入ったアセットが作成されます。次に、独自のアセットポストプロセッサであるWwiseBankPostProcessが、新アセットをそれぞれのプラットフォームのAddressablesグループに追加します。 各プラットフォームのInit SoundBankは、そのプラットフォームのAddressablesグループに追加されます。ここでInit Bankを別に扱っているのは、リリース後にプロジェクトへの変更(新しいオーディオバスの追加など)があった場合に、それをアップデートする必要があるからです。 Init SoundBankを、Addressable対象の専用AssetBundleにパッケージすることで、ホスティングサービスから、このアセットの最新バージョンを短時間でフェッチできます。 どのAddressablesグループにアセットを追加するのかや、どのラベルをアセットに適用するのかをカスタマイズしたい場合は、 Wwise Addressablesサンプル を参照してください。
アセットポストプロセッサは、プロジェクトの各SoundBankのWwiseAddressableSoundBankも作成してくれます。 このアセットには、プラットフォーム名を、そのSoundBankやストリーミングメディアアセットに対してマッピングするディクショナリが入っています。
注意: WwiseAddressableSoundBankが参照するSoundBankやストリーミングメディアは、ソフトリファレンスです。Addressablesを使ってロードされるので、必ずAddressablesグループの中にパッケージしてください。 |
注意: 誤ってWwiseAddressableSoundBankを削除してしまった場合は、それに関連づけられているSoundBankを一度削除して再生成して、新しいものを作成してリファレンスを正しく設定しなおす必要があります。 |
Init SoundBankのWwiseAddressableSoundBankが作成されると、InitBankHolderコンポーネントが、そのシーンのWwiseGlobalゲームオブジェクトに追加されます。 このコンポーネントは、AddressableBankManagerが見つけやすいように、単純にWwiseAddressableSoundBankを保存します。
Wwise Addressablesを使うと、AkAddressableBankManagerが、メモリにサウンドバンクをロード・アンロードするのを担当します。このクラスに、ロード中やロード済みのAddressableSoundBankへのリファレンスが保存され、必ずInit SoundBankが最初にロードされるようにしてくれます。 もしAkEventが、そのSoundBankのロード終了前にトリガーされてしまった場合は、このクラスが、トリガーされたコールのパラメータを保存し、SoundBankのロードが済んでから、このイベントを再度トリガーします。
SoundBankがロードされたら、現在のプラットフォームに対応するSoundBankアセットが、Addressablesを使ってロードされます。ロードが済むと、SoundBankデータがピン付けされ、AkSoundEngine.LoadBankMemoryCopy()を使ってメモリのコピーがサウンドエンジンにロードされます。
Editorでプレイモードのときは、AddressablesではなくAssetDatabaseを使って、SounBanksが同期的にロードします。非同期のロードは、ビルドしたゲームでしかテストできません。
WwiseBankReferenceクラスは、Ak.Wwise.Bankコンポーネントのために、カスタムInspectorで使います。 WwiseBankReference に、 WwiseAddressableSoundBank へのハードリファレンスが入っています。 このリファレンスはWwiseAddressableSoundBank Assetを AkAssetUtilities.AddressableBankUpdated デリゲート経由で作成した時に更新されます。 WwiseBankReference が WwiseAddressableSoundBank の後に作成された場合は、そのバンク名に一致するWwiseAddressableSoundBankアセットをSoundBanksフォルダ内で探します。 シリアル化されたWwiseBankReferencesは、 Assets\Wwise\ScriptableObjects\SoundBank
に保存されます。
注記: ゲームオブジェクトによって直接参照されるアセットは、すべてそのゲームオブジェクトと共にパッケージされます。 AkBank Componentには、WwiseBankReferenceへのハードリファレンスが含まれ、WwiseBankReferenceには、それに対応するWwiseAddressableSoundBankへのハードリファレンスが含まれます。 AkBankコンポーネントのあるGameObjectをAddressablesグループに入れると、それと共にWwiseBankReferenceや、WwiseAddressableSoundBankも、パッケージされます(グループに意図的に追加しなくても)。 |
ストリーミングメディア(.wem ファイル)にも、WwiseBankImporterスクリプトが対応します。 WwiseAddressableSoundBankには、このバンクに関連するプラットフォーム別のストリーミングメディアアセットへのリファレンスのリストが、含まれます。 バンクをロードすると、メディアアセットがAddressables経由でロードされ、 Application.persistentDataPath フォルダにコピーされます。 同名のファイルがすでにフォルダ内にある場合は、両者のハッシュを比較します。異なるファイルであれば、そのファイルを、AssetBundleのファイルで上書きします。