练习 - 启用和禁用运行时空间化
在本单元中,你将了解如何在运行时启用和禁用空间化,以及如何在 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 变量的 Spatialization 布尔属性。
附加脚本并通过按钮驱动
在“层次结构”中选择“四边形”。 在“检查器”窗口中,使用“添加组件”按钮添加 SpatializeOnOff(脚本)
在“层次结构”窗口中,找到“PressableButton_32x32mm_IconAndTextUnder”>“TextLabelUnder”。 在“层次结构”中仍选中“四边形”对象的情况下,在“检查器”窗口中找到“启用/禁用空间化(脚本)”组件,然后将“TextLabelUnder”组件拖放到“按钮文本对象”字段。
若要设置按钮以在按钮释放时调用 SpatializeOnOff 脚本,你需要配置可交互脚本。 在“层次结构”窗口中选择 PressableButton_32x32mm_IconAndTextUnder。 在“检查器”窗口中,找到“可按按钮”组件,然后选择“OnClicked ()”事件下的 + 图标。
在“层次结构”窗口中仍选中“PressableButton_32x32mm_IconAndTextUnder”对象的情况下,单击“四边形”对象并将其从“层次结构”窗口拖动到刚刚添加的事件的空“无(对象)”字段中,使 ButtonParent 对象侦听来自此按钮的按钮单击事件:
选择“无函数”下拉列表,然后选择“SpatializeOnOff”>“SwapSpatialization ()”以打开或关闭空间音频。