首页 > 解决方案 > Unity AudioManager PlayerPrefs 滑块

问题描述

我的项目有以下音频管理器。每当我从 Unity 中的“播放”按钮运行游戏时 - 我可以通过滑块更改音量并保存设置,当我退出并通过 Unity 的“播放”按钮再次播放时它们会加载。

但是,您能否向我解释为什么当我进入 PlayGame 然后我通过游戏中的“重新启动”按钮返回主菜单时无法执行此操作?当我这样做时 - 滑块已充电 100%,并且不会保存/加载新设置。

非常感谢任何评论/反馈!

public static AudioManager AMInstance;
[SerializeField] Slider volumeSlider;

private void Awake()
{
    if (AMInstance != null && AMInstance != this)
    {
        Destroy(this.gameObject);
        return;
    }
    AMInstance = this;
    DontDestroyOnLoad(this);
}
private void Start()
{
    if (!PlayerPrefs.HasKey("musicVolume"))
    {
        PlayerPrefs.SetFloat("musicVolume", 1);
        Load();
    }
    else
    {
        Load();
    }
}

public void ChangeVolume()
{
    AudioListener.volume = volumeSlider.value;
    Save();
}

public void Save()
{
    PlayerPrefs.SetFloat("musicVolume", volumeSlider.value);
}

public void Load()
{
    volumeSlider.value = PlayerPrefs.GetFloat("musicVolume");
}

}

标签: c#unity3d

解决方案


PlayerPrefs.Save()在导航到另一个场景之前,您需要先打电话。默认情况下会调用它OnApplicationQuit,但由于您只是设置浮点数,因此您可能需要显式调用 Save 函数。

Unity 的 PlayerPrefs.Save 文档


推荐阅读