练习 - 启用和禁用运行时空间化
在本单元中,你将了解如何在运行时启用和禁用空间化,以及如何在 Unity 编辑器和 HoloLens 2 中测试空间化。
添加空间化控制脚本
在“项目”窗口中右键单击,然后选择“ 创建>C# 脚本 ”以创建新的 C# 脚本。 输入脚本的合适名称;例如 SpatializeOnOff。
双击“项目”窗口中的脚本,在 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 变量的空间 化 布尔属性。
附加脚本并通过按钮驱动
在层次结构中选择 四边形 。 在检查器窗口中,使用 “添加组件 ”按钮添加 SpatializeOnOff(脚本)
在“层次结构”窗口中,找到 PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder。 在层次结构中继续选中Quad对象后,在检查器窗口中,找到Spatialize On Off(脚本)组件,然后将TextLabelUnder组件拖放到按钮文本对象字段。
若要设置按钮以在释放按钮时调用 SpatializeOnOff 脚本,需要配置可交互脚本。 在“层次结构”窗口中,选择 PressableButton_32x32mm_IconAndTextUnder。 在检查器窗口中,找到 “可按下按钮” 组件,然后选择 +OnClicked () 事件下的图标。
在“层次结构”窗口中仍选中“PressableButton_32x32mm_IconAndTextUnder”对象的情况下,单击“四边形”对象并将其从“层次结构”窗口拖动到刚刚添加的事件的空“无(对象)”字段中,使 ButtonParent 对象侦听来自此按钮的按钮单击事件:
选择 “无函数 ”下拉列表,然后选择 SpatializeOnOff>SwapSpatialization () 以打开和关闭空间音频。