Unity3d 统一,更改场景时出现音量滑块问题
我正在制作一个游戏,其中有一个空的游戏对象用于音频源音乐和该音乐的脚本,我在Different object中也有一个音量滑块。 剧本:Unity3d 统一,更改场景时出现音量滑块问题,unity3d,Unity3d,我正在制作一个游戏,其中有一个空的游戏对象用于音频源音乐和该音乐的脚本,我在Different object中也有一个音量滑块。 剧本: float musicVolume = 1f; private void Update() { mainMusic.volume = musicVolume; } // Slider will Trigger This public void SetVolume(float volume) { musicVolume = volum
float musicVolume = 1f;
private void Update()
{
mainMusic.volume = musicVolume;
}
// Slider will Trigger This
public void SetVolume(float volume)
{
musicVolume = volume;
}
我使用这种方式是因为它简单易行,因为我只会使用1首音乐。
有了它,我可以正确地控制我的音乐音量,但问题是当我转到另一个场景并返回时,滑块似乎什么也不做,所以我的音乐音量不会改变。
那么我该如何修复它呢?
对不起,我的英语不好。谢谢…首先,您可以从更新方法中删除卷初始化
你的问题
当从滑块设置音量时,设置成功率为0.5f
但是在调用更新方法之后,您的卷将从musicVolume变量设置为1f
解决方案
从更新方法中删除卷初始化
我的猜测是,一旦加载新场景,拥有音频源的对象就会被破坏 在脚本中执行此操作,以避免在更改场景时取消分配:
void Awake () {
DontDestroyOnLoad(this);
}
作为补充说明,您的更新可以避免,因为在每个帧设置音量不是最佳的。为什么不简单
公共void SetVolumefloat卷
{
mainMusic.volume=音量;
}
中间没有更新?只在需要时才做这项工作
对于您的问题:听起来您在主音乐上使用了DontDestroyOnLoad,并且由于加载场景后销毁了副本而失去了引用。你应该得到一个例外
但是,只需在脚本中搜索音频源,如
私人无效启动
{
mainMusic=FindObjectOfType;
}
public void SetVolume…{…}
或者,如果场景中有多个音频源,请为主音频源指定一个显式类型,例如
公共主音频源:音频源
{
//什么都不做,但现在你可以明确地搜索它了
}
然后在另一个脚本中
私人无效启动
{
mainMusic=FindObjectOfType;
}