연습 - 런타임에서 공간화 활성화 및 비활성화

완료됨

이 단원에서는 런타임에 공간화를 사용하거나 사용하지 않도록 설정하고 Unity 편집기 및 HoloLens 2에서 공간화를 테스트하는 방법을 알아봅니다.

공간화 컨트롤 스크립트 추가

  1. 프로젝트 창을 마우스 오른쪽 단추로 클릭하고C# 스크립트>를 선택하여 새 C# 스크립트를 만듭니다. 스크립트에 적합한 이름을 입력합니다. 예를 들어 SpatializeOnOff입니다.

    스크립트를 만드는 스크린샷

  2. 프로젝트 창에서 스크립트를 두 번 클릭하여 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;
        }
    }
    

    비고

    공간화를 사용하거나 사용하지 않도록 설정하기 위해 스크립트는 spatialBlend 속성만 조정하고 공간화 속성을 사용하도록 설정합니다. 이 모드에서 Unity는 여전히 볼륨 곡선을 적용합니다. 그렇지 않으면 사용자가 원본에서 멀리 떨어져 있을 때 공간화를 사용하지 않도록 설정하면 볼륨이 갑자기 증가하는 것을 들을 수 있습니다.

    공간화를 완전히 사용하지 않도록 설정하려면 SourceObject 변수의 공간화 부울 속성도 조정하도록 스크립트를 수정합니다.

스크립트를 연결하고 단추에서 드라이브

  1. 계층 구조에서 쿼드 를 선택합니다. 검사기 창에서 구성 요소 추가 단추를 사용하여 SpatializeOnOff(스크립트)를 추가합니다.

    쿼드에 스크립트 추가 스크린샷

  2. 계층 구조 창에서 PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder를 찾습니다. Hierarchy에서 Quad 개체를 선택한 상태에서 검사기 창에서 Spatialize On Off(스크립트) 구성 요소를 찾아 서 TextLabelUnder 구성 요소를 단추 텍스트 개체 필드로 끌어서 놓습니다.

    SpatialierOnOff 구성 요소가 있는 계층 구조에서 Quad 개체를 찾는 스크린샷

  3. 단추가 해제될 때 SpatializeOnOff 스크립트를 호출하도록 단추를 설정하려면 상호 작용 가능한 스크립트를 구성해야 합니다. 계층 구조 창에서 PressableButton_32x32mm_IconAndTextUnder 선택합니다. 검사기 창에서 누름 단추 구성 요소를 찾아 + 이벤트 아래의 아이콘을 선택합니다.

    1. [계층 구조] 창에서 PressableButton_32x32mm_IconAndTextUnder 개체를 선택한 상태에서 [계층 구조] 창에서 [Quad ] 개체를 클릭하고 방금 추가한 이벤트의 빈 없음(개체) 필드로 끌어서 ButtonParent 개체가 이 단추에서 단추 클릭 이벤트를 수신 대기하도록 합니다.

    2. 함수 없음 드롭다운을 선택한 다음 SpatializeOnOff>SwapSpatialization()을 선택하여 공간 오디오를 켜고 끕니다.

    단추 동작 설정의 스크린샷.