我在Unity中创建了一个具有4个不同场景的游戏(开始,登录,选项,游戏本身)。
有了一个空的游戏对象(在起始场景中)和DontDestroyOnLoad
函数,我设法在所有场景中播放音乐,而又不停止或在每个场景中加载新的音乐。
在选项场景中,有一个滑块钩接到了主音频混音器上,到目前为止,它仍然有效。
对我来说,唯一的问题是滑块可以在开始场景中“干扰” gameobject
(背景音乐,应通过滑块触发)。
如果有人可以帮助我,那将太好了! :)
这里有一些摘录:
ChangeVolume
类:
public AudioMixer audioMixer;
public void setVolume(float volume){
audioMixer.SetFloat ("volume", volume);
}
和
MusicBehaviour
类:
//Play global
private static MusicBehaviour instance = null;
public static MusicBehaviour Instance {
get {
return instance;
}
}
void Awake()
{
if (instance != null && instance != this) {
Destroy (this.gameObject);
return;
} else {
instance = this;
}
DontDestroyOnLoad (this.gameObject);
}
//Play Global End
//Update is called once per frame
void Update () {
}
我很高兴您的帮助/解决方案,也许有一个更简单的解决方案! :-)
答案 0 :(得分:2)
最简单的方法是使用PlayerPrefs
并将声音值保存在那里。每次在Awake()
中启动游戏时,您都会设置该值,并在触发滑块时更改PlayerPrefs
中的值并将其设置为MusicBehaviour
实例。
答案 1 :(得分:0)
我通过以下方式编辑脚本来解决问题:
Music Behaviour
类:
void Update () {
float vol = ChangeVolume.vol;
this.gameObject.GetComponent<AudioSource> ().volume = vol;
}
Change Volume
类:
public void setVolume(float volume){
vol = volume;
}
public static float vol = 1.0f;
由于不再需要我的混音器,我也删除了它。而且效果很好! :-)