我正在尝试制作音乐应用程序。
我希望能够使用同一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];
}
}
非常感谢您的帮助。
答案 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);
}
}