バージョン
Wwise Unity Integration Documentation
|
バージョン2018.1より、Wwise Authoring API (WAAPI) のサポートをUnityインテグレーションに組み込みました(詳しくは Using the Wwise Authoring API (WAAPI) を参照)。 バージョン2021.1でWwise Authoring API (WAAPI) のデザインを見直し、Wwise Pickerとのインテグレーションを改善して全体的に使いやすくしました。 WAAPIとWwise Pickerの関係や使い方について、詳しくはWwise Pickerのドキュメンテーションページをご覧ください: Wwise Picker .
WAAPIの設定は、 Project Settings > Wwise Editor > 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 ドキュメンテーションにあります。
Wwise Pickerは、WwiseObjectInfoJsonObjectを、これらの関数のテンプレートタイプとして使います。これらのオブジェクトは、次にAkWaapiUtilities.ParseObjectInfo によって、WwiseObjectInfoにキャストされます。
WwiseObjectInfoに含まれていないオブジェクトプロパティをフェッチしたい場合は、アクセスしたいプロパティのためのカスタムクラスが必要です。 例えば、Notesフィールドだけが知りたい場合は、以下のようなクラスを作成します:
次に、notesフィールドだけをリストしたReturnOptionsオブジェクトと、WwiseObjectNotesのリストを受け取るコールバックの、 AkWaapiUtilities.GetWwiseObject<T> (前述のほかの関数でも可)をコールします。
AkWwiseTreeWAAPIDataSource クラスには、Wwise Pickerで表示するために、WAAPIを使ってWwiseオブジェクトをフェッチする例が、多数入っています。
WAAPIトピックにサブスクライブするには、 AkWaapiUtilities.Subscribe を使います。 URIでサブスクライブするトピックを特定できます。コールバック引数は、トピックがパブリッシュされたときにコールするJSON文字列の引数を受け入れる関数です。 このサブスクリプションの登録が完了すると、handshakeCallbackをコールします。サブスクリプション識別子の入った AkWaapiUtilities.SubscriptionInfo オブジェクトを、受け取ります。 この情報は、サブスクリプションをリクエストしたクラスに保存します。
注意: ライフタイムの終わりにサブスクリプションをクリーンアップする責任は、AkWaapiUtilities.Subscribeをコールしたクラスにあります。 これは、AkWaapiUtilities.Unsubscribe をコールすることで行います。 |
このインテグレーションで使われているサブスクリプション例を見るには、 AkWwiseTreeWAAPIDataSource クラスを確認してください。
利用可能なトピックについてのさらなる情報は、 >Wwise Authoring API Reference にあります。
WAAPI接続が終了する直前に(または急に終了したときに)、 AkWaapiUtilities.Disconnection デリゲートがコールされます。 デリゲートのブーリアンパラメータが、まだ接続が有効かどうかを示します。
注記: WAAPIトピックにサブスクライブしているクラスは、接続が切れる前にサブスクリプションを解除できるように、このデリゲートにバインドしておくべきです。 |
AkWaapiUtilitiesクラスに含まれる以下の追加の関数を使い、Unity内からあなたのWAAPIプロジェクトとやり取りができます:
これらのコマンドの使用例が、AkWwisePicker や、AkWwiseTreeView にあります。
あなたが実行したいWAAPIコマンドが、まだ AkWaapiUtilities に実装されていなくても、自分でコマンドを作成することができます。 WAAPIコールを出しレスポンスを受領するには、JSON引数を構築しパースする必要があります。
レスポンスをパースする必要がないコマンドには、 AkWaapiUtilities.QueueCommand を使います
レスポンスに、パースする値があるコマンドには、 AkWaapiUtilities.QueueCommandWithReturnType<T> を使います
Unity JsonUtility
クラスで、C::クラスとJSON文字列の間の翻訳が簡単にできます。JSON文字列に変換する必要のある引数やオプションのベースクラスとして JsonSerializable を使います。
次にこのクラスを拡張すれば、特定のWAAPIスキーマ用にC::ラッパーを提供できます。使用例については、Eventを再生してトランスポートにサブスクライブするのに必要なスキーマクラスを、WAAPIを使ってどのように作成したかを、参考にしてください:
引数やオプションのスキーマ
リターンされるオブジェクトのスキーマ
AkWaapiUtilities.TogglePlayWwiseEventAsync や、 AkWaapiUtilities.CreateTransport で、これらがどのように使われているのかを見ることができます。