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

완료됨

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

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

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

    Screenshot of creating a script.

  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;
        }
    }
    

    참고

    공간화를 활성화 또는 비활성화하기 위해 스크립트는 spatialization 속성은 활성화된 상태로 유지하면서 spatialBlend 속성만 조정합니다. 이 모드에서 Unity는 여전히 볼륨 곡선을 적용합니다. 그렇지 않고 사용자가 원본에서 먼 경우 공간화를 비활성화하면 볼륨이 갑자기 증가하게 됩니다.

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

스크립트를 연결하고 단추에서 구동

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

    Screenshot of Add script to quad.

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

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

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

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

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

    Screenshot of Button action settings.