レッスン 1

目次

SoundBankをロードする(Loading a SoundBank)

Wwise Eventをポストするには、まずそのEventをSoundBankに追加し、メモリにロードしておきます。

[ヒント]

SoundBankにWwise Eventを追加する方法は、 Wwise Certification 101 の説明を参照してください。

SoundBankをUnityでロードするには、Wwiseが少なくとも以下の2点を知る必要があります。

  1. 参照するゲームオブジェクト。

  2. Triggerのメカニズム。

この情報はスクリプトで定義します。Wwise Unity Integrationで、既成のAkBankスクリプトをゲームオブジェクトに追加し、それをアタッチするゲームオブジェクトとすれば、上記1を満たせます。AkBankコンポーネントの中でSoundBankをロードする様々な方式をLoad Onプロパティで選択できるので、これで上記 2を満たせます。

[注釈]

ゲームオブジェクトにスクリプトを追加すると、それはコンポーネントとして追加されます。

Wwise Adventure Gameのサウンドの大半は、GeneralというSoundBankの中に入っています。これらのサウンドをランタイムに再生するには、最初にこのSoundBankをロードします。AkBankコンポーネントの設定で、GeneralのSoundBankをロードするタイミングを、ゲームの様々なアクションを使って自由に設定できますが、今回は、単純にゲームがスタートする前に Awake でSoundBankをロードしておくのが妥当です。そうすれば、ゲームが Start でスタートするときに合わせて、すべてのサウンドがポストされます。これから、GeneralというSoundBankをWwise Adventure Gameにロードし、Awake時点で確実にロードされるための手順を説明します。

  1. Unityのメニューで、 Audiokinetic > Certification > 301 > Lesson 1 > Loading a SoundBank を選択します。

    [注釈]

    'Loading a SoundBank' というSceneは、Wwise Adventure GameのMain Sceneのコピーです。このコースで使えるように、いくつかのシーンが用意されていて、あなたが演習でエレメントを追加・変更するスペースもとってあります。また、Main Sceneに影響せずに自分で実験できるSceneもあります。

  2. UnityのHierarchyビューで、 Wwise を展開し、 GeneralSoundBanks ゲームオブジェクトを選択します。

    Unityは、初期化の時点で、すべてのゲームオブジェクトに追加されたすべてのスクリプトを確認します。そこで、Unityの Script Lifecycle Flowchart に含まれるファンクションの入ったスクリプトがあれば、それらのファンクションを既定の順番でコールします。これを利用して、実行の順番を守るために、GeneralSoundBanksゲームオブジェクトに追加するAkBankスクリプトを、 Awake にアサインすれば、Unityの初期化のときに自動的に起動します。

    簡単に便利にAkBankスクリプトをゲームオブジェクトに追加するには、Wwise Pickerを利用してください。Wwise Unity Integrationの標準機能で、接続中のWwiseプロジェクトにある利用可能なオブジェクト、例えばEventやSoundBankやSwitchなどが、リスト表示されます。このようなWwiseオブジェクトをゲームオブジェクトの上にドラッグすると、対応するインテグレーションコンポーネントが追加され、オブジェクトが自動的にそれにアサインされます。

    [注釈]

    Wwise Pickerを開くには、Unityメニューで、Window > Wwise Pickerを選択します。Wwise Pickerの詳細は、 https://www.audiokinetic.com/library/edge/?source=Unity&id=unity__picker.html を参照してください。

  3. Wwise Pickerで、 SoundBanks > Default Work Unit > General を展開し、 General というSoundBankを、Inspectorの GeneralSoundBanks ゲームオブジェクトにドラッグします。

    [注釈]

    SoundBankをInspectorまでドラッグするときに、誤ってSoundBankでなくWork Unitをドラッグしないように気をつけてください。

    [ヒント]

    別の方法として、Add Componentを使いAkBankスクリプトを追加してから、該当するSoundbankのBank Nameをアサインすることもできます。

    Inspectorを見てください。

    これによると、AkBankというスクリプトがGeneralSoundBanksゲームオブジェクトに追加され、Bank NameとしてGeneralのSoundBankが選択されているのが分かります。Load OnプロパティはデフォルトでStartに設定されていますが、Wwise Adventure Gameでは、EventがStart時点ですでにポストされているので、実行の順序を変更して、SoundBankのロードのタイミングを、ゲームが Awake でロードするときにしてください。Load Onプロパティを、いったんNothingに設定すれば、その他の選択中のTriggerがすべて解除されるので、 Start Awake が同時に選択されることはありません。

    [ヒント]

    Start時にロードされるEventがなければ、Start時にSoundBankをロードしても構いません。SoundBankをAwake時にロードし、Start時にEventをポストする方法は、Eventのポストより前にSoundBankを確実にロードしておくための単純な方法ですが、ほかのUnityプロジェクトでは、違う方法があるかもしれません。

  4. Load On プロパティを開き、 Nothing を選択します。

  5. もう一度開き、Awakeを選択します。

    以上です。Wwiseサウンドエンジンを初期化すると、GeneralのSoundBankがロードされます。それでは、Wwiseを使いゲームのプロファイリングを行う前に、SoundBankを生成してください。

  6. Wwiseに切り換え、 Layouts メニューで、 SoundBank を選択します。

  7. SoundBank ManagerでGenerate Allをクリックします。

    次にProfilerに接続してPlayをクリックし、SoundBankがロードされていることを確認してください。Wwise Adventure Gameが開いていて、Wwiseサウンドエンジンが稼働中であれば接続可能で、Playモードである必要はありません。

  8. Wwiseに戻り、 Layouts メニューで、 Profiler を選択します。

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

  10. Remote ConnectionsビューのAvailableタブで、 Wwise Adventure Game (Editor) をダブルクリックします。

  11. Unityで Play をクリックします。

    いったんPlayモードに入ると、すでにロードされたSoundBanksをProfilerが認識するので、すぐにWwise Profilerで確認できます。

  12. WAG (Wwise Adventure Game) メニューを開くには ESC を押し、 Playモードを終了するにはもう一度 Play をクリックします。

  13. Wwiseに切り換え、Advanced ProfilerでMemoryタブを選択します。

  14. Performance Monitorでタイムカーソルをドラッグし、MemoryタブにGeneralのSoundBankが表示されるまで戻ります。

    Advanced Profilerに、GeneralのSoundBankを含めWwiseのすべてのメモリアロケーションのリストが表示されます。Memoryタブのリストに表示されていれば、SoundBankがメモリにロードされているので、このSoundBankからEventをポストできます。

[注釈]

Playモード中に行った変更は、保存されません。そこで、ほかのセクションや演習に進む前に、変更点が失われないように必ずPlayモードを終了させてください。今回の演習ではPlayモード終了の警告がありますが、次のセクションでは、Playボタンを無効(Playモードではない)にする方法を知っているものとして進められます。

最初のステップが完了しました。いよいよ、サウンドの再生です!