练习 - 启用和禁用运行时空间化

已完成

在本单元中,你将了解如何在运行时启用和禁用空间化,以及如何在 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(脚本)

    将脚本添加到Quad的屏幕截图。

  2. 在“层次结构”窗口中,找到 PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder。 在层次结构中继续选中Quad对象后,在检查器窗口中,找到Spatialize On Off(脚本)组件,然后将TextLabelUnder组件拖放到按钮文本对象字段。

    使用 SpatialierOnOff 组件查找层次结构中的 Quad 对象的屏幕截图。

  3. 若要设置按钮以在释放按钮时调用 SpatializeOnOff 脚本,需要配置可交互脚本。 在“层次结构”窗口中,选择 PressableButton_32x32mm_IconAndTextUnder。 在检查器窗口中,找到 “可按下按钮” 组件,然后选择 +OnClicked () 事件下的图标。

    1. 在“层次结构”窗口中仍选中“PressableButton_32x32mm_IconAndTextUnder”对象的情况下,单击“四边形”对象并将其从“层次结构”窗口拖动到刚刚添加的事件的空“无(对象)”字段中,使 ButtonParent 对象侦听来自此按钮的按钮单击事件:

    2. 选择 “无函数 ”下拉列表,然后选择 SpatializeOnOff>SwapSpatialization () 以打开和关闭空间音频。

    按钮操作设置的屏幕截图。