レッスン 2

目次

Multi Positionモードを使う

Unityで、無駄な重複を抑える典型的な方法として、Prefabのようなモジュラーオブジェクトを使い、複数の情報タイプを1本にまとめて保存します。例えば、Torch(松明)のPrefabがいい例です。Torchのある場所や、見た目や、予想される行動などを指定するコンポーネントが、Prefabの中に入っています。AkAmbientコンポーネントをあなたのPrefabに追加すると、誰かがSceneにTorchを追加するたびにTorchサウンドが必ず含まれます。AkEventとAkAmbientスクリプトのどちらを使っても可能ですが、この目的に一番合っているのは、AkAmbientのPosition TypeをMultiPositionモードに設定する方法です。このモードはアタッチしているゲームオブジェクトからEventを再生するために使うものですが、AkEventや、AkAmbientのSimpleモードと同じで、MultiPositionモードでは、そのレベルに追加したAkAmbientコンポーネントがいくつあったとしても、Eventのインスタンスは1つだけです。

これから、AkAmbientコンポーネントを301_TorchというPrefabに追加する手順を説明します。最初はAkAmbientをSimpleに設定しておき、次にMultiPositionモードに変えてみて、ボイスインスタンス数の違いを実際に見ます。

  1. まだAkAmbient Position TypesのSceneにいることを確認します。

    Torch音に慣れるために、まずDungeonでその音を聞いてみてください。その間、Profilerに接続し、ゲーム中のTorchの数(17個)に対応する、現在のボイスインスタンスの数を見てください。

  2. Wwiseのツールバーで Remote… をクリックします。

  3. Wwise Adventure Game (Editor) を選択し、 Connect をクリックします。

  4. Unityで Play をクリックしてPlayモードに入ります。

  5. ESC を押してゲームメニューに入り、 Dungeon にテレポートします。

  6. 廊下を走り抜けながら、Torchの音を聞いてみます。

    ここでTorch音はすべて、Torchゲームオブジェクトの場所に直接配置されていて、あなたがその音の横を通るたびに、音が大きくなり、そして小さくなります。

  7. ESC を押してWAGメニューを開き、 Play をもう一度クリックしてPlayモードを終了させます。

  8. Wwiseのメニューで、Layoutsを選択し、Voice Profilerを選択します。

    フィルターでAmbient_TorchのEventをアサインし、それだけを観察できるようにします。

  9. Performance Monitorでタイムカーソルを後方にドラッグし、Voice Inspectorに301_Torchが表示されるまで戻ります。

    Voice Inspectorの左のパネルを見ます。このパネルに、Voice Monitorでキャプチャされた、すべてのアクティブなゲームオブジェクトと関連ボイスが表示されます。Ambient_TorchのEventを使うボイスは、10個以上もあるのが分かります。それでは、Position TypeをMultiPositionモードに設定して違いを観察してみます。

  10. UnityのHierarchyに戻り、 Torch を探し、 301_Torch_01 ゲームオブジェクトを選択します。

    Hierarchyの青字オブジェクトは、そのオブジェクトがPrefabアセットを参照していることを意味します。Prefabは、ゲームオブジェクトのテンプレートのことです。PrefabをドラッグしてSceneに入れると、このPrefabと全く同じゲームオブジェクトが作成されますが、元のPrefabに変更を加えると、そこから派生したすべてのゲームオブジェクトに、変更内容が自動的に反映されます。Prefabに変更を加えるには、Projectビューでそれを選択してから、Inspectorで変更を加えます。あるいは、Sceneの中にあるPrefabのゲームオブジェクトに変更を加えてから、変更点をPrefabに送り返すこともできます。それでは、301_Torch_01ゲームオブジェクトのAkAmbientを変更してから、変更内容を元のPrefabに適用してみます。

    [ヒント]

    Prefabについてさらに詳しく知るには、 https://docs.unity3d.com/Manual/Prefabs.html を参照してください。

  11. Position Type プロパティで、 Multi Position_Mode を選択します。

    次に、変更内容を元のPrefabに送り返す必要があります。そのためには、ゲームオブジェクトで変更したコンポーネントのApplyをクリックします。

  12. Inspectorで 歯車アイコン > Modified Component をクリックし、 Apply to Prefab '301_Torch' をクリックして新しく変更したプロパティをPrefabに送り返します。

    これで、301_Torch_01ゲームオブジェクトの変更点を、301_TorchのPrefabに保存できたので、そのプロパティが、ほかのすべてのTorchゲームオブジェクトに継承されます。

  13. Wwiseで Reconnect をクリックします。

  14. Unityで Play をクリックしてPlayモードに入ります。

  15. ゲームメニューから Dungeon にテレポートします。

  16. Dungeon入口の廊下に駆け込み、走って戻ってきて、その間、Torchの音を聞いてみます。

    ここで複数聞こえるTorch音は今も、Torchゲームオブジェクトのそれぞれの場所にあるかのうようで、まるで複数のAkEventボイスが同時に再生されているようです。

  17. ESC を押してWAGメニューを開き、 Play をもう一度クリックしてPlayモードを終了させます。

WwiseのVoice Inspectorに戻ってみると、左のパネルにあったEventの複数のインスタンスがたった1つに減っていますが、それでも前と同等のオーディオ出力が提供されていました。Voice Inspectorの右にパネルには、個々のTorchのDistance Attenuationが表示されます。

これ以降は、DungeonにTorchをさらに追加したとしても、Sceneに追加するPrefabはどれも、MultiPositionモードが使われるので、インスタンス数は1のままです。このためMultiPositionモードはレベルデザイナーと共同作業をするときに理想的な設定で、どこにどう動かそうと、音はオブジェクトに組み込まれていて、オーディオパフォーマンスに追加の負荷がかかることはありません。

[注釈]

忘れてはならないのは、MultiPositionモードがたった1つのインスタンスを使っているので、どのサウンドポジションからも同じボイスが再生されることです。このため、音のポジションによって多様性をもたせたくても、Randomizerは使えません。