Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 统一,更改场景时出现音量滑块问题_Unity3d - Fatal编程技术网

Unity3d 统一,更改场景时出现音量滑块问题

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

我正在制作一个游戏,其中有一个空的游戏对象用于音频源音乐和该音乐的脚本,我在Different object中也有一个音量滑块。 剧本:

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; }