バージョン
Wwise Unity Integration Documentation
|
このインテグレーションは、Unity Scene GameObjectsでそのまま使えるWwise専用コンポーネントを提供します。これらのコンポーネントで、サウンドデザインの大体のシナリオに対応できます。コンポーネントはC::のカスタムスクリプトですが、その公開プロパティを編集するのに、プログラミングは必要ありません。
Unity GameObjectsにWwiseコンポーネントを追加するには:
![]() |
TIP: コンポーネントのサーチフィールドに "ak" と入力すると、すべてのWwiseコンポーネントの入ったリストがすぐに表示されます。 |
コンポーネントをゲームに追加するには、WwiseオブジェクトをWwise PickerからInspectorにドラッグするか、ロードしたシーンのHierarchyの中にあるゲームオブジェクトにドラッグします。
WwiseGlobalオブジェクトは、Wwise Sound EngineのInitializingスクリプトとTerminatingスクリプトを含むGameObjectです。各シーンをEditorで正しくプレビューできるように、Editorのワークフローにおいて、すべてのシーンに追加されます。ゲーム中は最初のシーンでインスタンスが1つだけ作成され、それがゲームの終わりまで存続します。初期化スクリプトに、いくつかのカスタム設定可能なオプションがあります。
この動作を解除するには、 Edit > Wwise Settings を使い、 Create WwiseGlobal GameObject を無効にします。その場合、ゲームを通して存在するオブジェクトに、initializerスクリプトを追加するのは、あなたの責任となります。
ポジショニング機能を使うには、すべてのシーンで、Ak Audio Listenerスクリプトをメインカメラに添付する必要があります。デフォルトで、自動的にリスナーがメインカメラに追加されます。この動作を無効にするには、 Edit > Wwise Settings に進み、 Automatically add Listener to Main Camera を無効にします。
またこのインテグレーションには、最小限のコードで、これ以外の利用シナリオの大部分に対応できるクラスが、いくつか提供されています:
AK.Wwise.AuxBus
AK.Wwise.Bank
AK.Wwise.CallbackFlags
AK.Wwise.Event
AK.Wwise.RTPC
AK.Wwise.State
AK.Wwise.Switch
AK.Wwise.Trigger
AK.Wwise.AcousticTexture
C# APIのあるネイティブWAAPIクライアントを使い、Unity内から WAAPI に接続できます。現在、WindowsとmacOS用に提供中です。Wwise Authoring APIが、JSONオブジェクト経由でメッセージを送信します。Unity側では、文字列を使いクライアントを実装しました。あなたの好きな方式で、有効なJSON文字列を構築してから、WAAPIクライアントに渡してください。
サウンドをゲームに追加する方法は、3通りあります:
AK.Wwise.Event.Post()
をC::スクリプトからコールできます。AkSoundEngine.PostEvent()
をC::スクリプトからコールできます。UnityのTimeline機能用に、Wwiseイベントをトリガーしたり、Wwise RTPC値を設定したりするための、カスタム設定のWwiseトラックがあります。
Unityインテグレーションに、Wwise Authoringツールとのインターフェースに使えるシンプルなWAAPIクライアントが入っています。
Wwise SDKの大部分の機能を AkSoundEngine
クラスからUnityで利用できます。C++ ネームスペースの AK::SoundEngine
や AK::MusicEngine
などの代わりとしてとらえることができます。元のSDKと比較してAPIバインディングにどのような変更があったかは、 APIの変更と制約 を参照してください。 複雑な状況の場合は、コードでWwiseファンクションをコールする必要があります。APIで、全てのファンクションの GameObjectID
がGameObjectのUnityフレーバーに置き換えられます。AkGameObj コンポーネントを既にマニュアル操作で追加してない限り、ランタイムにこのGameObjectに自動的に追加されます。
ネーティブWwise APIで、文字列やIDを使ってWwiseプロジェクト内のイベントやその他の名前の付いたオブジェクトをトリガーできます。C::の世界でも、 Wwise_IDs.h
ファイルを Wwise_IDs.cs
に変換することで、同様にできます。Assets > Wwise > Convert Wwise SoundBank IDsをクリックする。これが機能するには、Pythonをインストールしておく必要があります。
MIDIをWwiseに送るには、 AkMIDIPostArray
クラスの AkMIDIPost
メンバーをfillして、以下の方式のどれかをコールします:
AkMIDIPostArray.PostOnEvent()
AkSoundEngine.PostMIDIOnEvent()
AK.Wwise.Event.PostMIDI()
以下は、サウンドエンジンにMIDIメッセージを送るための基本的なスクリプトです。
Audio Input Sourceプラグインを、C::スクリプト経由で使えます。Wwise SDKドキュメンテーションの、オーディオ入力ソースプラグインを参照してください。
以下は、Audio Input Sourceプラグインにテストトーンを送るための基本的なスクリプトです。
デフォルトで、 AkGameObj
コンポーネントは特定のUnity gameObject
に添付されて、そのtransform(オフセットの設定も可)を使ってフルポジショニングを行います。ファーストパーソンシューティングゲームなど多くのゲームは、これで充分です。一方、オーディオリスナーを単純に1つのゲームオブジェクト、例えばUnityのメインカメラなどに添付するだけでは、多くのサードパーソンゲームなどにあるカスタム設定されたカメラ角度で、ポジショニングに対応するための2つの要素(距離減衰とスペーシャリゼーション)に対応するのが難しい場合があります。また、その他のカスタム設定ポジショニングをプレイヤーに提供するゲームも、考えられます。
このような使い方のために、 AkGameObj
コンポーネントクラスで、Unityユーザーはポジショニングをオーバーライドできます。GetPosition()、
GetForward()、
GetUpward()
という3つのバーチャル方式を使って、ユーザーは AkGameObj
からサブクラスを取り、そのサブクラスコンポーネントでUnity gameObjects
のポジショニングをいくつでもカスタマイズできます。
デフォルトの AkAudioListener
動作を、カスタムコンポーネントを使ってオーバーライドするシンプルな例を、ここに示します。Wwiseにサードパーソンのプロジェクトをインテグレートした状態で、既存の AkAudioListener
と、それに関連付けられた AkGameObj
を削除します。次に、以下のスクリプトをMainCameraオブジェクトに添付して、さらに AkAudioListener
を添付して、最後にオーディオリスナーのポジションが追うターゲットとして、Unity gameObject
(例えばプレイヤーのアバター)を指定します。これ以降、全てのエミッターの距離減衰を計算するのに、選択したターゲットのUnity gameObject
のポジションをリスナーポジション(画面上の距離リスナー)としてとらえる一方、全てのエミッターのオリエンテーションを決めるには、引き続きメインカメラのオリエンテーションをリスナーのオリエンテーションとしてとらえます(画面外のオリエンテーションリスナー)。