レッスン 5

目次

Game ParameterをWwise-Typesで設定する(Setting Game Parameters using Wwise-Types)

徐々に変化するエフェクトプロパティや、バーチャルボイス設定や、ボリュームレベルを、継続的にコントロールするには、おそらくGame Parameterを使うことになります。Game Parameterで、サウンドの補間や、時間の経過とともに変化する様子を、コントロールできます。Wwise Adventure Gameの太陽は、その一例です。太陽光の光源をTimeOfDayというプロパティでコントロールしますが、Allegro Kingdomが闇に包まれるにつれ太陽が沈むのと同じく、アンビエンスも、夜の音へとゆっくりと変化させたいところです。

このようなアンビエンスの段階的な変化を、Blend Containerを使い設定できます。そしてTime_of_DayというGame Parameterの数値で、再生するアンビエンスがDayなのかNightなのかをコントロールできます。

これから、WAGのTimeOfDayプロパティを利用してTime_of_DayのGame Parameterを動かす方法を学びます。そして、適切に作動することをGame Object Profilerで確認します。

  1. Unityのメニューで、 Audiokinetic > Certification > 301 > Lesson 5 を選択し、 Setting Game Parameters with Wwise-Types を選択します。

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

  3. Inspectorで新しく、 SetTimeOfDayRTPC というスクリプトを作成します。

    [注釈]

    スクリプトの作成方法が分からなければ、 レッスン 4 の Wwise-Type Eventプロパティを作成する を参照してください。

  4. スクリプトをコードエディタで開くには、 SetTimeOfDayRTPC スクリプトをダブルクリックします。

    ゲームのフレームごとに、その時のゲーム内時間を取得し、適切なRTPCを設定できるようなスクリプトを作成することが、ここでの私たちの目的です。これに該当するTime_of_DayというRTPCが、すでにWAGに存在します。このRTPCをアップデートするのに利用できるのがWwise-Typeで、RTPCとして使うのは、ご想像のとおり、AK.Wwise.RTPC です。それでは、このクラスを定義し、 publicアクセス修飾子を使ってInspectorで見えるようにしてください。

  5. SetTimeOfDayRTPC クラスに、 public AK.Wwise.RTPC と入力します。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
        
    public class SetTimeOfDayRTPC : MonoBehaviour {
        public AK.Wwise.RTPC
        // Use this for initialization
        void Start () {
        
        }
        
        // Update is called once per frame.
        void Update () {
                
        }
    }

  6. 変数の名前を TimeOfDayRTPC とし、最後にセミコロン (;) で終わりにします。

    publicclass SetTimeOfDayRTPC : MonoBehaviour {
    public AK.Wwise.RTPC TimeOfDayRTPC;
    
  7. Windowsでは CTRL+S 、Macでは CMD+S を押し、スクリプトを保存します。

    Inspectorに、選択してアサインできる状態のWwise-Type RTPCというproperty drawerが表示されますが、RTPCを選択する以外に、このプロパティをスクリプトで使うことはありません。ゲーム内の時間の経過とともに、このプロパティを常に更新する必要があるので、ゲームの各フレームでアップデートされるファンクションから、このプロパティをコールすることにします。ファンクションの名前は Update() で、波括弧の中にあるものをすべて実行してくれます。

  8. Update() ファンクションの中に、 TimeOfDayRTPC.set と入力します。

    // Update is called once per frame.
    void Update () {
        TimeOfDayRTPC.set
    }

    ピリオド (.) のあとに入力し始めると、Visual Studioが、あなたの入力内容に似た設定可能なファンクションを探してくれます。2つの選択肢が表示されますが、それはSetGlobalValueとSetValueです。もしメニューが表示されなければ、下のTimeOfDayRTPCまでずっと削除してから、ピリオド (.) を追加します。

    SetValue()ファンクションを使うと、RTPCが今のゲームオブジェクトだけに設定されます。しかしリージョンのアンビエンスは多数のゲームオブジェクト上にあるので、SetGlobalValueを使い、ゲームにあるすべてのゲームオブジェクトに同じGame Parameterが適用されるようにします。

  9. TimeOfDayRTPC のあとに、 SetGlobalValue を選択するか、 SetGlobalValue() と入力します。

    // Update is called once per frame.
    void Update () {
        TimeOfDayRTPC.SetGlobalValue()
    }

    次に、RTPCのGame Parameterに値を送る必要があります。Wwise Adventure Gameで一日の時間をアップデートするのは、DayNightCycleというスクリプトです。このスクリプトが、継続的にこの値をGameManagerに送り、GameManagerが、様々なグローバルゲーム変数をゲームプレイ中に把握します。そこで、TimeOfDayRTPCを設定するには、GameManagerから値を取得し、.SetGlobalValue()ファンクションを使ってWwiseに値を送ればいいだけです。

  10. SetGlobalValue の括弧内に GameManager.TimeOfDay と入力し、括弧のあとにセミコロン(;)を追加します。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
        
    public class SetTimeOfDayRTPC : MonoBehaviour {
        public AK.Wwise.RTPC TimeOfDayRTPC;
        // Use this for initialization.
        void Start () {
          
        }
        
        // Update is called once per frame.
        void Update () {
            TimeOfDayRTPC.SetGlobalValue(GameManager.TimeOfDay);
        }
    }

    スクリプト関連の手順は以上なので、スクリプトを保存します。

  11. Windowsでは CTRL+S 、Macでは CMD+S を押し、スクリプトを保存します。

    最後に、Time_of_DayのGame ParameterをWwise-Type RTPC変数にアサインし、どのGame Parameterを設定するのかがスクリプトに伝わるようにしてください。

  12. Unityで TimeOfDayRTPC というproperty drawerを選択してから Ambient を展開し、 Time_Of_Day をダブルクリックします。

    Game Parameterがアップデートされているかを確認するために、Game Object Profilerを使います。Time_Of_DayのGame Parameterを選択すれば、その値の変化を観察できます。

  13. WwiseでLayouts を選択し、 Game Object Profiler を選択します。

    Game Object Profilerで、登録したゲームオブジェクトの経過をモニタリングできます。ゲームオブジェクトが登録されるのは、コンポーネントやスクリプトから、Eventをポストしたときです。ただし、グローバルスコープでファンクション値を設定しているので、RTPC値は同じRTPCにアサインされているすべてのゲームオブジェクトに適用され、Game Parameterカーブを見るためにGame Object Profilerでゲームオブジェクトを指定する必要がありません。

    [ヒント]

    GlobalスコープとGame Objectスコープの違いについて詳しくは、以下 オブジェクトのGlobalスコープ、Gameスコープを理解する のセクションを参照してください。

  14. Game Object ExplorerでWatchesタブを選択します。

  15. セレクタ (>>) を使い、 Global Game Object を選択します。

    次に、観察したいGame Parameterを、Game Sync Monitorで選択します。

  16. Game Sync Monitorで Add を追加します。

  17. Ambient のWork Unitを展開し、 Time_of_Day のGame Parameterを選択し、 OK をクリックします。

    ゲームに接続してプレイすれば、このGame ParameterがGame Sync Monitorでキャプチャーされます。

  18. Remote… をクリックします。

  19. Remote Connectionsビューで、 Wwise Adventure Game (Editor) を強調表示にし、 Connect をクリックします。

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

  21. Wwiseに切り換え、Game Sync Monitorを見ます。

    今度はGame Sync Monitorに、安定した右上がりのカーブが表示されます。GameManagerスクリプトのTimeOfDayパラメータを使い、スクリプトがRTPCを更新しているからです。もっと劇的な変化を観察したければ、ゲームのWAGメニューでTime of Dayスライダーを変えて、GameManagerのTimeOfDay変数を更新してみてください。続ける前に、まず Playモードを終了 させてください。

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