ue3dUnity当中的Player Prefs默认值

Unity当中的Player Prefs默认值

分类:
ue3d - Unity当中的Player Prefs默认值

在 Unity 中加载首选项值时,如果输入的键不存在,则将返回数据类型的默认值,对于浮点数和整数值,默认值为 0,对于字符串为空白。

但是,也可以指定一个自定义默认值,如果该键不存在,将使用该默认值。

例如,当获取音量设置的浮点值时,如果首选项不存在,而不是使用 0,我们可以使用自定义默认值 0.75:

float volume = PlayerPrefs.GetFloat("masterVolume", 0.75f);

这对于加载使用自动默认值可能不好的设置很有用,例如将音量设置为 0,仅仅是因为不存在玩家偏好。

或者,可以在尝试加载之前检查密钥是否存在,使用 Has Key 方法:

float volume;
if (PlayerPrefs.HasKey(key))
{
    volume = PlayerPrefs.GetFloat("masterVolume");
}

这对于在尝试对其进行任何操作之前检查密钥是否存在很有用,但是,这个方法有个小问题。

虽然 Has Key 函数将可靠地检查密钥是否存在于 Player Prefs 文件中,但它不会检查存储值的类型。

那么这就意味着,如果将某个键保存为浮点数,例如,使用 Set Float 函数,然后尝试使用其键找到它,则 Has Key 函数将正确找到它,并返回 true,表明存在键在那个名字下。

但是,如果随后尝试使用 Get Int 或 Get String 函数检索键,则不会找到该类型的键,而是使用默认值。

这意味着如果不小心尝试检索错误类型的值,即使先使用 Has Key 函数检查,也会得到一个默认值,就好像它不存在一样。

发生这种情况是因为单个首选项只能存在一个键值,但该键可以是任何一种受支持的类型,字符串、浮点数或整数。这意味着可以用新的数据类型覆盖键,导致任何其他 Get 函数不返回任何内容。

相关信息

  • 类型:知识
  • 字数:476
  • 字符:1301
  • 平台:Unity
  • 说明:无
  • 编号:62863

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!