演習 - 実行時に空間化を有効または無効にする

完了

このユニットでは、実行時に空間化を有効または無効にする方法と、Unity エディターと HoloLens 2 で空間化をテストする方法を学習します。

空間化コントロール スクリプトを追加する

  1. [プロジェクト] ウィンドウを右クリックし、[作成]>[C# スクリプト] を選択して新しい C# スクリプトを作成します。 スクリプトに適切な名前を入力します。たとえば、SpatializeOnOff です。

    Screenshot of creating a script.

  2. [Projct](プロジェクト) ウィンドウでスクリプトをダブルクリックして、Visual Studio で開きます。 既定のスクリプトの内容を次のもので置き換えます。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.Audio;
    
    [RequireComponent(typeof(AudioSource))]
    public class SpatializeOnOff : MonoBehaviour
    {
        public GameObject ButtonTextObject;
        //public AudioMixerGroup RoomEffectGroup;
        //public AudioMixerGroup MasterGroup;
    
        private AudioSource m_SourceObject;
        private bool m_IsSpatialized;
        private TMPro.TextMeshPro m_TextMeshPro;
    
        public void Start()
        {
            m_SourceObject = gameObject.GetComponent<AudioSource>();
            m_TextMeshPro = ButtonTextObject.GetComponent<TMPro.TextMeshPro>();
            SetSpatialized();
        }
    
        public void SwapSpatialization()
        {
            if (m_IsSpatialized)
            {
                SetStereo();
            }
            else
            {
                SetSpatialized();
            }
        }
    
        private void SetSpatialized()
        {
            m_IsSpatialized = true;
            m_SourceObject.spatialBlend = 1;
            m_TextMeshPro.SetText("Set Stereo");
            //m_SourceObject.outputAudioMixerGroup = RoomEffectGroup;
        }
    
        private void SetStereo()
        {
            m_IsSpatialized = false;
            m_SourceObject.spatialBlend = 0;
            m_TextMeshPro.SetText("Set Spatialized");
            //m_SourceObject.outputAudioMixerGroup = MasterGroup;
        }
    }
    

    Note

    空間化を有効または無効にするには、スクリプトが [spatialBlend] プロパティだけを調整するようにして、[空間化] プロパティは有効のままにします。 このモードでも、Unity は[ボリューム] 曲線を適用します。 そうしないと、ユーザーがソースから離れた時に空間化を無効にする場合、ボリュームが急に大きくなるように感じることになります。

    空間化を完全に無効にしたい場合は、スクリプトを修正して SourceObject 変数の Spatialization ブール値プロパティも調整します。

スクリプトを追加して、ボタンから起動する

  1. [階層] で Quad を選択します。 [インスペクター] ウィンドウで [コンポーネントの追加] ボタンを使用して SpatializeOnOff(Script) を追加します

    Screenshot of Add script to quad.

  2. [階層] ウィンドウで、PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder を見つけます。 [階層] の Quad オブジェクトを選択した状態で、[インスペクター] ウィンドウで [オフ時に空間化 (スクリプト)] コンポーネントを見つけ、[TextLabelUnder] コンポーネントを [ボタン テキスト オブジェクト] フィールドにドラッグ アンド ドロップします。

    Screenshot of finding the Quad object in the hierarchy, with the SpatialierOnOff component.

  3. ボタンを離したときに [SpatializeOnOff] を呼び出すようにボタンを設定するには、対話型スクリプトを構成する必要があります。 [階層] ウィンドウで、[PressableButton_32x32mm_IconAndTextUnder] を選択します。 [インスペクター] ウィンドウで、[押せるボタン] コンポーネントを見つけ、OnClick () イベントの下にある + アイコンを選択します。

    1. [階層] ウィンドウの PressableButton_32x32mm_IconAndTextUnder オブジェクトを選択した状態で、Quad オブジェクトをクリックし、[階層] ウィンドウから、追加したばかりのイベントの空の [なし (オブジェクト)] フィールドにドラッグして、ButtonParent オブジェクトがこのボタンのボタン クリック イベントをリッスンするようにします。

    2. [関数なし] ドロップダウンを選択してから、SpatializeOnOff>SwapSpatialization () を選択して空間オーディオをオン、オフします。

    Screenshot of Button action settings.