如何在运行时在Unity中更改AudioMixer源

时间:2019-05-21 01:30:05

标签: c# unity3d

我正在尝试制作音乐应用程序。

我希望能够使用同一GameObject在AudioMixer中的不同声音组之间进行更改。

是否可以在运行时用另一个脚本更改PianoMixer源?

public class PianoAudioManager : MonoBehaviour{

public PianoSound[] PianoSounds;
public static PianoAudioManager instance;
public AudioMixerGroup PianoMixer; 

void Awake()
{
    if (instance == null)
        instance = this;
    else
    {
        Destroy(gameObject);
        return;
    }
    DontDestroyOnLoad(gameObject);

    foreach(PianoSound s in PianoSounds)
    {
        s.source = gameObject.AddComponent<AudioSource>();
        s.source.outputAudioMixerGroup = PianoMixer;
        s.source.clip = s.clip;

        s.source.volume = s.volume;
        s.source.pitch = s.pitch;
    }

}    

}

我尝试过类似的操作,但是我总是会出错

public class Octaves : MonoBehaviour
{

public GameObject PianoAudioManager;

public void OctaveDown()
{

    AudioMixer audioMixer = Resources.Load<AudioMixer>("Scales/Sounds");

    AudioMixerGroup[] audioMixGroup = audioMixer.FindMatchingGroups("Master/PianoDown");

    PianoAudioManager.outputAudioMixerGroup = audioMixGroup[0];
}

}

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我终于得到了答案。 右键单击参数名称“ Pitch”,然后选择“将'Pitch'暴露给脚本”。

using UnityEngine.Audio;

public class Octavas : MonoBehaviour
{

public GameObject PianoAudioManager;


public void OctaveDown()
{
    AudioMixer audioMixer = Resources.Load<AudioMixer>("Scales/Sounds");
    audioMixer.SetFloat("PianoPitch", 0.5f);
}

}