バージョン
menu
Wwise Unity Integration Documentation
|
バージョン2018.1より、Wwise Authoring API (WAAPI) のサポートをUnityインテグレーションに組み込みました(詳しくは Using the Wwise Authoring API (WAAPI) を参照)。 In version 2021.1, the Wwise Authoring API (WAAPI) was redesigned for better integration with the Wwise Browser and overall ease of use. More information about how WAAPI is used with Wwise Browser is found on its documentation page: Wwise Browser.
WAAPI settings are found in Project Settings > Wwise Integration > Wwise Authoring API .
ここで Connect to Wwise チェックボックスのチェックを外すと、WAAPI機能は無効になります。 デフォルトで、WAAPIクライアントはlocalhost (127.0.0.1)のPort 8080に接続します。 これらの設定をWAAPIに接続したまま変更すると、現在の接続が切れ、新しいターゲットアドレスに接続しようとします。
プロジェクトにうまく接続できないときは、以下のソリューションを試してみてください:
AKWaapiClientクラスは、websocket接続を使ってWwise Authoringとメッセージを送受信します。WAAPIメッセージは、JSONオブジェクトです。 WAAPIコールは非同期的で、WAAPIに対するコールがGUIスレッドなどのスレッドからくることがあるので、返信を待つことはできません。 また、websocketの実装は一度に1レスポンスしか待ち受けることができないので、WAAPIクライアントはAkWaapiUtilitiesクラスにラップされています。 このクラスは、WAAPIリクエストを作成したりエンキュー(enqueue)したりする関数セットを提供し、アップデートループ中に順次、それらを呼び出します。 WAAPIリクエストは、非同期関数ポインタペイロードを含むたけのWaapiCommandにカプセル化されています。コマンドが消化されると、ペイロードが実行されます。
AkWaapiUtilitiesで提供される関数で、あなたのほとんどのニーズをカバーできるはずですが、作り込まれていない特別なWAAPIの使い方をしたければ、自分で実装することもできます。詳細は その他のWAAPIコマンド を参照してください。
![]() | 注意: 提供されるWAAPIコールの大部分は、Wwise Authoring Query Language (WAQL) を使っています。 WAQLの詳細については、 WAQLの introduction ページや、 reference ページを参照してください。 |
AkWaapiUtilitiesには、すでにWwiseオブジェクトをフェッチするためのWAAPIコールが入っています。
これらが、returnオプションで指定されたプロパティを含むオブジェクトのリストを返します。すべてのreturnオプションの一覧が、 WAAPI ドキュメンテーションにあります。
The Wwise Browser uses the WwiseObjectInfoJsonObject as the template type for these functions. これらのオブジェクトは、次にAkWaapiUtilities.ParseObjectInfo によって、WwiseObjectInfoにキャストされます。
WwiseObjectInfoに含まれていないオブジェクトプロパティをフェッチしたい場合は、アクセスしたいプロパティのためのカスタムクラスが必要です。 例えば、Notesフィールドだけが知りたい場合は、以下のようなクラスを作成します:
次に、notesフィールドだけをリストしたReturnOptionsオブジェクトと、WwiseObjectNotesのリストを受け取るコールバックの、 AkWaapiUtilities.GetWwiseObject<T> (前述のほかの関数でも可)をコールします。
The AkWwiseTreeWAAPIDataSource class contains many examples of using WAAPI to fetch Wwise objects to populate the Wwise Browser.
WAAPIトピックにサブスクライブするには、 AkWaapiUtilities.Subscribe を使います。 URIでサブスクライブするトピックを特定できます。コールバック引数は、トピックがパブリッシュされたときにコールするJSON文字列の引数を受け入れる関数です。 このサブスクリプションの登録が完了すると、handshakeCallbackをコールします。サブスクリプション識別子の入った AkWaapiUtilities.SubscriptionInfo オブジェクトを、受け取ります。 この情報は、サブスクリプションをリクエストしたクラスに保存します。
![]() | 注意: ライフタイムの終わりにサブスクリプションをクリーンアップする責任は、AkWaapiUtilities.Subscribeをコールしたクラスにあります。 これは、AkWaapiUtilities.Unsubscribe をコールすることで行います。 |
このインテグレーションで使われているサブスクリプション例を見るには、 AkWwiseTreeWAAPIDataSource クラスを確認してください。
利用可能なトピックについてのさらなる情報は、 >Wwise Authoring API Reference にあります。
WAAPI接続が終了する直前に(または急に終了したときに)、 AkWaapiUtilities.Disconnection デリゲートがコールされます。 デリゲートのブーリアンパラメータが、まだ接続が有効かどうかを示します。
![]() | 注記: WAAPIトピックにサブスクライブしているクラスは、接続が切れる前にサブスクリプションを解除できるように、このデリゲートにバインドしておくべきです。 |
AkWaapiUtilitiesクラスに含まれる以下の追加の関数を使い、Unity内からあなたのWAAPIプロジェクトとやり取りができます:
You can find examples of these commands being used in AkWwiseBrowser and AkWwiseTreeView .
あなたが実行したいWAAPIコマンドが、まだ AkWaapiUtilities に実装されていなくても、自分でコマンドを作成することができます。 WAAPIコールを出しレスポンスを受領するには、JSON引数を構築しパースする必要があります。
レスポンスをパースする必要がないコマンドには、 AkWaapiUtilities.QueueCommand を使います
レスポンスに、パースする値があるコマンドには、 AkWaapiUtilities.QueueCommandWithReturnType<T> を使います
Unity JsonUtility
クラスで、C::クラスとJSON文字列の間の翻訳が簡単にできます。JSON文字列に変換する必要のある引数やオプションのベースクラスとして JsonSerializable を使います。
次にこのクラスを拡張すれば、特定のWAAPIスキーマ用にC::ラッパーを提供できます。使用例については、Eventを再生してトランスポートにサブスクライブするのに必要なスキーマクラスを、WAAPIを使ってどのように作成したかを、参考にしてください:
引数やオプションのスキーマ
リターンされるオブジェクトのスキーマ
AkWaapiUtilities.TogglePlayWwiseEventAsync や、 AkWaapiUtilities.CreateTransport で、これらがどのように使われているのかを見ることができます。