Exercício – Habilitar e desabilitar a espacialização no tempo de execução
Nesta unidade, você aprenderá a habilitar e desabilitar a espacialização em runtime, além de testá-la no editor do Unity e no HoloLens 2.
Adicionar script de controle de espacialização
Clique com o botão direito do mouse na janela Projeto e escolha Criar>Script C# para criar um script C#. Insira um nome adequado para o script, por exemplo, SpatializeOnOff.
Clique duas vezes no script na janela Projeto para abri-lo no Visual Studio. Substitua o conteúdo do script padrão pelo seguinte:
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; } }
Observação
Para habilitar ou desabilitar a espacialização, o script ajusta apenas a propriedade spatialBlend, deixando a propriedade de espacialização habilitada. Desse modo, o Unity ainda aplica a curva Volume. Caso contrário, se o usuário desabilitar a espacialização quando estiver longe da fonte, ele ouvirá o volume aumentar de modo repentino.
Se você preferir desabilitar totalmente a espacialização, modifique o script para também ajustar a propriedade booliana Espacialização da variável SourceObject.
Anexar o script e conduzi-lo desde o botão
Selecione Quad em Hierarquia. Na janela Inspetor, use o botão Adicionar Componente para adicionar SpatializeOnOff(Script)
Na janela Hierarquia, localize PressableButton_32x32mm_IconAndTextUnder>TextLabelUnder. Com o objeto Quad ainda selecionado em Hierarquia, na janela Inspetor, localize o componente SpatializeOnOff (Script) e arraste e solte o componente TextLabelUnder para o campo Objeto de Texto do Botão.
Para definir o botão para chamar o script SpatializeOnOff quando o botão for liberado, você precisará configurar o script interacionável. Na janela Hierarquia, selecione PressableButton_32x32mm_IconAndTextUnder. Na janela Inspetor, localize o componente Botão Pressionável e selecione o ícone + no evento OnClicked ().
Com o objeto PressableButton_32x32mm_IconAndTextUnder ainda selecionado na janela Hierarquia, clique e arraste o objeto Quad da janela Hierarquia para o campo Nenhum (Objeto) vazio do evento que você acabou de adicionar para fazer com que o objeto ButtonParent escute o evento de clique desse botão.
Selecione a lista suspensa Sem Função e escolha SpatializeOnOff>SwapSpatialization () para ativar e desativar o áudio espacial.