C# 在Android移动平台上为unity使用Playerprefs
我有一个关于我的android手机游戏的playerprefs没有正确初始化的问题。我已经在一个值为3的变量上预先设置了playerprefs数据。在我对unity的播放模式中,该值通过我编写脚本的textmesh显示为3。但当我在android移动设备上安装并测试它时,它是0。有人能帮助我在android平台上将playerprefs数据正确初始化为正确的值吗C# 在Android移动平台上为unity使用Playerprefs,c#,unity3d,game-engine,C#,Unity3d,Game Engine,我有一个关于我的android手机游戏的playerprefs没有正确初始化的问题。我已经在一个值为3的变量上预先设置了playerprefs数据。在我对unity的播放模式中,该值通过我编写脚本的textmesh显示为3。但当我在android移动设备上安装并测试它时,它是0。有人能帮助我在android平台上将playerprefs数据正确初始化为正确的值吗 只有在按M键或R键(在调试方法中)时,才能设置PlayerReference 如果希望该值具有默认值,则应将其添加到Start()
只有在按M键或R键(在调试方法中)时,才能设置PlayerReference 如果希望该值具有默认值,则应将其添加到
Start()代码>
有点像
void Start()
{
// Set the MAxAntiBody to 3 if the value was never set to an initial value
if(PlayerPrefs.GetInt("MaxAntiBody") == default(int))
PlayerPrefs.SetInt("MaxAntiBody", 3);
...
}
编辑:正如评论中指出的,您还可以执行以下操作:
var x = PlayerPrefs.GetInt("MaxAntiBody", 3);
返回与首选项文件中的键(如果存在)对应的值。如果它不存在,它将返回defaultValue
如果GetInt()。这取决于GetInt(string,int)
的实现,如果不存在,我不确定是否会创建密钥。快速提醒;PlayerPref存储在设备上,因此您在windows编辑器中所做的更改将存储到磁盘上的某个文件夹中。您的android设备将没有该文件-因此每个环境的更改都是唯一的抱歉。这是我的错。但是为什么不PlayerPrefs.GetInt(键,默认值)代码>相反?默认值(int)
只是编写0
的漫长过程,即不保证未设置此值before@AndrewŁukasik好吧,无论如何,谢谢你试图澄清这一点!:)。无论您是使用default(int)
还是0
,这都只是一点味道。我不认为使用这两种方法都是有害的。我个人在本例中使用了default(int)
,因为我想让读者知道我是在与默认值进行比较,而不是与值(0)进行比较。它增加了一些可读性,我立即了解到我正在以默认值进行比较,因此我可以更快地知道我在做什么。至于PlayerPrefs.GetInt(string,int)
。我个人不认为两者都值得投反对票。
var x = PlayerPrefs.GetInt("MaxAntiBody", 3);