バージョン
menu

Wwise Unity Integration Documentation
WAAPIユーティリティ

バージョン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.

  1. WAAPIの設定
    1. トラブルシューティング
  2. WAAPIをUnityで使う
    1. Waapiを使ってWwise Objectをフェッチする
    2. トピックにサブスクライブする
    3. Disconnection
    4. その他のWAAPIコマンド

WAAPIの設定

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に接続したまま変更すると、現在の接続が切れ、新しいターゲットアドレスに接続しようとします。

トラブルシューティング

プロジェクトにうまく接続できないときは、以下のソリューションを試してみてください:

  • Wwise Authoringで正しいプロジェクトが開いているかを、確認してください。
  • Check that the Wwise Project Path in Project Settings > Wwise Integration > Wwise Project is correct.
  • 複数のWwise Authoringインスタンスが開いた状態だと、そのうちの1つが、別のインスタンスのWAAPIポートをブロックしてしまうことがあります。
  • Wwise AuthoringでWAAPIが有効になっているか、そして許可された接続やポートが正しいかを、確認してください。
    • WAAPI設定は、User Preferencesにあります。

WAAPIをUnityで使う

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 ページを参照してください。

Waapiを使ってWwise Objectをフェッチする

AkWaapiUtilitiesには、すでにWwiseオブジェクトをフェッチするためのWAAPIコールが入っています。

これらが、returnオプションで指定されたプロパティを含むオブジェクトのリストを返します。すべてのreturnオプションの一覧が、 WAAPI ドキュメンテーションにあります。

The Wwise Browser uses the WwiseObjectInfoJsonObject as the template type for these functions. これらのオブジェクトは、次にAkWaapiUtilities.ParseObjectInfo によって、WwiseObjectInfoにキャストされます。

WwiseObjectInfoに含まれていないオブジェクトプロパティをフェッチしたい場合は、アクセスしたいプロパティのためのカスタムクラスが必要です。 例えば、Notesフィールドだけが知りたい場合は、以下のようなクラスを作成します:

public class WwiseObjectNotes
{
public string notes;
}

次に、notesフィールドだけをリストしたReturnOptionsオブジェクトと、WwiseObjectNotesのリストを受け取るコールバックの、 AkWaapiUtilities.GetWwiseObject<T> (前述のほかの関数でも可)をコールします。

{
var callback = ( List<WwiseObjectNotes> notes ) => {
// do something
};
var options = new ReturnOptions(new string[] { "notes" });
var objectGuid = System.Guid.Empty(); //Put an actual guid from your project here
AkWaapiUtilities.GetWwiseObject<WwiseObjectNotes>( objectGuid, options, callback);
}

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 にあります。

  • トピックURIの多くは、 Uri.cs にあります

Disconnection

WAAPI接続が終了する直前に(または急に終了したときに)、 AkWaapiUtilities.Disconnection デリゲートがコールされます。 デリゲートのブーリアンパラメータが、まだ接続が有効かどうかを示します。

注記: WAAPIトピックにサブスクライブしているクラスは、接続が切れる前にサブスクリプションを解除できるように、このデリゲートにバインドしておくべきです。

その他の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 を使います。

public class JsonSerializable
{
public static implicit operator string(JsonSerializable o) => UnityEngine.JsonUtility.ToJson(o);
}

次にこのクラスを拡張すれば、特定のWAAPIスキーマ用にC::ラッパーを提供できます。使用例については、Eventを再生してトランスポートにサブスクライブするのに必要なスキーマクラスを、WAAPIを使ってどのように作成したかを、参考にしてください:

引数やオプションのスキーマ

リターンされるオブジェクトのスキーマ

AkWaapiUtilities.TogglePlayWwiseEventAsync や、 AkWaapiUtilities.CreateTransport で、これらがどのように使われているのかを見ることができます。

Base class for Json serializable objects. Implements implicit cast to string using UnityEngine....
Definition: AkWaapiHelper.cs:27
WAAPI options to specify the names of fields to return in a WAAPI request returning WwiseObjects.
Definition: AkWaapiHelper.cs:150
This class wraps the client that communicates with the Wwise Authoring application via WAAPI....
Definition: AkWaapiUtilities.cs:34

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

サポートは必要ですか?

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

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

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

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

Wwiseからはじめよう