レッスン 2
目次
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モードに変えてみて、ボイスインスタンス数の違いを実際に見ます。
-
AkAmbient Position TypesのSceneを開きます(Audiokinetic > Certification > 301 > Lesson 2 > AkAmbient Position Types)。
Torch音に慣れるために、まずDungeonでその音を聞いてみてください。その間、Profilerに接続し、ゲーム中のTorchの数(17個)に対応する、現在のボイスインスタンスの数を見てください。
-
Wwiseのツールバーで Remote… をクリックします。
-
Wwise Adventure Game (Editor) を選択し、 Connect をクリックします。
-
Unityで Play をクリックしてPlayモードに入ります。
-
ESC を押してゲームメニューに入り、 Dungeon にテレポートします。
-
廊下を走り抜けながら、Torchの音を聞いてみます。
ここでTorch音はすべて、Torchゲームオブジェクトの場所に直接配置されていて、あなたがその音の横を通るたびに、音が大きくなり、そして小さくなります。
-
ESC を押してWAGメニューを開き、 Play をもう一度クリックしてPlayモードを終了させます。
-
Wwiseのメニューで、Layoutsを選択し、Voice Profilerを選択します。
フィルターでAmbient_TorchのEventをアサインし、それだけを観察できるようにします。
-
Performance Monitorでタイムカーソルを後方にドラッグし、Voice Inspectorに301_Torchが表示されるまで戻ります。
Voice Inspectorの左のパネルを見ます。このパネルに、Voice Monitorでキャプチャされた、すべてのアクティブなゲームオブジェクトと関連ボイスが表示されます。Ambient_TorchのEventを使うボイスは、10個以上もあるのが分かります。それでは、Position TypeをMultiPositionモードに設定して違いを観察してみます。
-
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 を参照してください。
-
Position Type プロパティで、 Multi Position_Mode を選択します。
次に、変更内容を元のPrefabに送り返す必要があります。そのためには、ゲームオブジェクトで変更したコンポーネントのApplyをクリックします。
-
InspectorでAkAmbientを右クリックし、Modified Component > Apply to Prefab '301_Torch'を選択すると、プロパティの変更内容がPrefabに適用されます。
これで、301_Torch_01ゲームオブジェクトの変更点を、301_TorchのPrefabに保存できたので、そのプロパティが、ほかのすべてのTorchゲームオブジェクトに継承されます。
-
Wwiseで Reconnect をクリックします。
-
Unityで Play をクリックしてPlayモードに入ります。
-
ゲームメニューから Dungeon にテレポートします。
-
Dungeon入口の廊下に駆け込み、走って戻ってきて、その間、Torchの音を聞いてみます。
ここで複数聞こえるTorch音は今も、Torchゲームオブジェクトのそれぞれの場所にあるかのうようで、まるで複数のAkEventボイスが同時に再生されているようです。
-
ESC を押してWAGメニューを開き、 Play をもう一度クリックしてPlayモードを終了させます。
WwiseのVoice Inspectorに戻ってみると、左のパネルにあったEventの複数のインスタンスがたった1つに減っていますが、それでも前と同等のオーディオ出力が提供されていました。Voice Inspectorの右にパネルには、個々のTorchのDistance Attenuationが表示されます。
これ以降は、DungeonにTorchをさらに追加したとしても、Sceneに追加するPrefabはどれも、MultiPositionモードが使われるので、インスタンス数は1のままです。このためMultiPositionモードはレベルデザイナーと共同作業をするときに理想的な設定で、どこにどう動かそうと、音はオブジェクトに組み込まれていて、オーディオパフォーマンスに追加の負荷がかかることはありません。
忘れてはならないのは、MultiPositionモードがたった1つのインスタンスを使っているので、どのサウンドポジションからも同じボイスが再生されることです。このため、音のポジションによって多様性をもたせたくても、Randomizerは使えません。 |