c# - Unity 5 音频音量 slider

标签 c# audio unity3d

我正在尝试创建一个 slider ,可用于 Unity 5 中的音量控制,但音量不会改变。

我的游戏对象被称为 MainMusicPlayer 用于音频源和 Volume Slider 用于 slider

我将发布整个脚本,因为这将是有益的。

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class AudioSettingsScript : MonoBehaviour 
{

    public const float DefaultVolumeLevel = 1f;

    Slider volumeSlider;

    void Start() 
    { 
        GameObject temp = GameObject.Find("Volume Slider");
        if (temp != null)
        {
            volumeSlider = temp.GetComponent<Slider>();

            if (volumeSlider != null)
            {
                volumeSlider.normalizedValue = PlayerPrefs.HasKey("VolumeLevel") ? PlayerPrefs.GetFloat("VolumeLevel") : DefaultVolumeLevel;
            }
            else
            {
                Debug.LogError("[" + temp.name + "] - Does not contain a Slider Component!");
            }

        }
        else
        {
        Debug.LogError("Could not find an active GameObject named Volume Slider!");
    }

    }
    public void OnApply()
    {
        PlayerPrefs.SetFloat("VolumeLevel", volumeSlider.normalizedValue);
    }
}

代码的对齐方式统一正确,但这里不喜欢

最佳答案

Unity 中的主音量控制由 AudioListener 拥有。

您的代码正在更新 PlayerPrefs 中保存的值调用VolumeLevel ,但它实际上并没有告诉 Unity 在任何时候改变音量。要在全局范围内执行此操作(即一次针对所有声音),您可以更新 AudioListener.volume值为 volumeSlider.normalizedValue .默认情况下,音量设置为 1.0 ,所以你只能让事情变得更安静 - 如果播放器想要比默认音量更大的音量,他们需要打开他们的扬声器。

所以,在你的 Start读取保存值的方法,将其应用于 AudioListener.volume以及 slider ,并将新值应用于 AudioListener.volumeOnApply方法也是。

关于c# - Unity 5 音频音量 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30912790/

相关文章:

c# - 是否可以编写一个自定义的 EnumConverter 来代替默认的 EnumConverter?

c# - 将模型传递给 Html.Action

c# - 需要帮助找出为什么我的代码不起作用

c# - 以概率生成 true 或 false bool 值

c# - .Net Core 不支持 UserPasswordCredential

c# - 客户端/服务器 Winforms C#

audio - sox-如何以16kbps的比特率创建mp3文件

c# - 声音按钮不播放声音

.net - 使用NAudio howto捕获播放的信号

android - 如何使用 buildTypes、productFlavors 和 sourceSet 为不同的 android channel 批量构建 apk