バージョン

menu_open
Wwise Unity Integration Documentation
UnityのためのWwise Addressablesパッケージ

Unity Addressablesについて

The Unity Addressables system uses AssetBundles to package assets separately from the player. 追加のアセットを外部サーバに格納することのできるDLCなどの用途には、特に便利です。

If you are new to Addressables, see
Addressables package and Get started with Addressables for essential background information.

The following topics explain how to set up the Wwise Unity Addressables package:

The following sections describe how the Wwise Addressables package works:

Characteristics of the Addressables System

Be aware of the following characteristics of the Addressables system:

  • Addressablesでアセットをロードすると、本質的に、非同期となります: SoundBankをロードすることと、イベントをポストすることが、同じトリガーにリンクしている場合は、問題が発生する可能性があります。そこで、イベントの正確なタイミングが特に重要なときは、SoundBankに関連付いているEventがトリガーされる前に、そのSoundBankをロードするようにしてください。なお、Init Soundbankは特別なケースで、シーンのどのSoundBankよりも先にロードする必要があります。Init SoundBankアセットをリモートでアップデートしている場合は、シーンの最初にSoundBankをロードする際に、わずかな追加のディレイが生じることが予測されますが、これは、まずAddressablesを使って新しいInit SoundBankをウェブサーバからフェッチする必要があるからです。
  • Addressableアセットを、シーンで、直接のリファレンスとしてはいけません: Addressablesのアセットは、Addressablesシステムを使ってシーンにダイナミックにロードすることになっています。シーンで直接参照先となっているアセットは、そのシーンのAssetBundleに作り込まれるため、Addressables経由でロードされることはありません。もし、シーンに直接置いたアセットを、Addressablesでもパッケージ化した場合は、ゲームデータに、このアセットの2つの別々のコピーが存在することになります。1つはシーンのAssetBundleにあり、もう1つはAddressableグループのAssetBundleにあります。

既知の問題点と限界

  • プロジェクトの全プラットフォームが、ルートとして同じ Generated SoundBanks Path を共有する必要があります。
  • Unityのプロジェクト設定で Generated SoundBank Path を設定しても、External Sourcesのアウトプットパスは自動的に変更されません。
  • Decoded SoundBanksの保存とロードに、まだ未対応です。
  • Prepared Eventsに、まだ未対応です。
  • External Sourcesに、まだ未対応です。

Wwise Addressablesサンプル

Wwise Addressablesサンプル でWwise Addressablesアセットの管理を助けるために設計されたコードサンプルの追加情報を提供します。

Understanding Wwise Addressable Assets

WwiseのAsset Importer

The WwiseBankImporter classes process .bnk and .wem files. このスクリプトで、ファイルのバイナリデータの入ったアセットが作成されます。次に、独自のアセットポストプロセッサであるWwiseBankPostProcessが、新アセットをそれぞれのプラットフォームのAddressablesグループに追加します。 各プラットフォームのInit SoundBankは、そのプラットフォームのAddressablesグループに追加されます。ここでInit Bankを別に扱っているのは、リリース後にプロジェクトへの変更(新しいオーディオバスの追加など)があった場合に、それをアップデートする必要があるからです。 Init SoundBankを、Addressable対象の専用AssetBundleにパッケージすることで、ホスティングサービスから、このアセットの最新バージョンを短時間でフェッチできます。 どのAddressablesグループにアセットを追加するのかや、どのラベルをアセットに適用するのかをカスタマイズしたい場合は、 Wwise Addressablesサンプル を参照してください。

SoundBankと、AddressableSoundBank

アセットポストプロセッサは、プロジェクトの各SoundBankのWwiseAddressableSoundBankも作成してくれます。 このアセットには、プラットフォーム名を、そのSoundBankやストリーミングメディアアセットに対してマッピングするディクショナリが入っています。

  • WwiseAddressableSoundBankは、Generated SoundBanksフォルダのルートレベルにあります。
  • WwiseAddressableSoundBankクラスは、SoundBankやメディアファイルをポイントするのに、AssetReferenceTを使います。
  • プロジェクトをビルドするときに、WwiseAddressableSoundBankのCurrent Platfrom Assetsフィールドが、ターゲットとなるビルドプラットフォームに設定されます。
注意:
  • SoundBanks and streaming media referenced in the WwiseAddressableSoundBank are soft references. Addressablesを使ってロードされるので、必ずAddressablesグループの中にパッケージしてください。
  • If you delete a WwiseAddressableSoundBank by mistake, you will have to delete and regenerate the SoundBanks it is associated with in order to create a new one and set up its references properly.

Init Bank Holderについて

Init SoundBankのWwiseAddressableSoundBankが作成されると、InitBankHolderコンポーネントが、そのシーンのWwiseGlobalゲームオブジェクトに追加されます。 このコンポーネントは、AddressableBankManagerが見つけやすいように、単純にWwiseAddressableSoundBankを保存します。

Addressable Bank Managerについて

When using Wwise Addressables, the AkAddressableBankManager handles loading and unloading of SoundBanks into memory. このクラスに、ロード中やロード済みのAddressableSoundBankへのリファレンスが保存され、必ずInit SoundBankが最初にロードされるようにしてくれます。 If an AkEvent is triggered before its SoundBank has finished loading, this class stores the triggered call's parameters and retriggers the event after the SoundBank is loaded.

When a SoundBank is loaded, the SoundBank asset that corresponds to the current platform is loaded using Addressables. After it is loaded, the SoundBank data is pinned and a copy of the memory is loaded into the sound engine with AkUnitySoundEngine.LoadBankMemoryCopy().

When in Play Mode in the Unity editor, the AssetDatabase is used instead of Addressables to load SoundBanks synchronously. 非同期のロードは、ビルドしたゲームでしかテストできません。

注記: Ensure that you use AkBank to load your SoundBanks instead of manually calling the API.

WwiseBankReference

WwiseBankReferenceクラスは、Ak.Wwise.Bankコンポーネントのために、カスタムInspectorで使います。 WwiseBankReference に、 WwiseAddressableSoundBank へのハードリファレンスが入っています。 このリファレンスはWwiseAddressableSoundBank Assetを AkAssetUtilities.AddressableBankUpdated デリゲート経由で作成した時に更新されます。 WwiseBankReferenceWwiseAddressableSoundBank の後に作成された場合は、そのバンク名に一致するWwiseAddressableSoundBankアセットをSoundBanksフォルダ内で探します。 シリアル化されたWwiseBankReferencesは、 Assets\Wwise\ScriptableObjects\SoundBank に保存されます。

注記: ゲームオブジェクトによって直接参照されるアセットは、すべてそのゲームオブジェクトと共にパッケージされます。 AkBank Componentには、WwiseBankReferenceへのハードリファレンスが含まれ、WwiseBankReferenceには、それに対応するWwiseAddressableSoundBankへのハードリファレンスが含まれます。 AkBankコンポーネントのあるGameObjectをAddressablesグループに入れると、それと共にWwiseBankReferenceや、WwiseAddressableSoundBankも、パッケージされます(グループに意図的に追加しなくても)。

ストリーミングメディア

ストリーミングメディア(.wem ファイル)にも、WwiseBankImporterスクリプトが対応します。 WwiseAddressableSoundBankには、このバンクに関連するプラットフォーム別のストリーミングメディアアセットへのリファレンスのリストが、含まれます。 バンクをロードすると、メディアアセットがAddressables経由でロードされ、 Application.persistentDataPath フォルダにコピーされます。 同名のファイルがすでにフォルダ内にある場合は、両者のハッシュを比較します。異なるファイルであれば、そのファイルを、AssetBundleのファイルで上書きします。


このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう