c# - 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");
}
}
解决方案
PlayerPrefs.Save()
在导航到另一个场景之前,您需要先打电话。默认情况下会调用它OnApplicationQuit
,但由于您只是设置浮点数,因此您可能需要显式调用 Save 函数。
推荐阅读
- php - sql 查询包括 where 没有它不会更新表?
- spring - 在 Spring Boot 应用程序中包含 Spring Data 会中断自动序列化
- c# - MS 测试等效于 Nunits Substitue.For
- python - globals() 绑定到声明它的模块而不是使用它的模块
- javascript - 如何通过单击按钮在 10 个选项卡中打开相同的链接 10 次
- java - 寻找有关如何避免死锁的建议
- python - 用于存储移动对象位置的数据结构的 Python 实现
- xaml - 根据布尔值更改 Xamarin 表单标签的文本
- javascript - 如何为动态组件提供输入和输出
- ssl - 在没有域名的情况下检查 SSL 是否正确安装