C# PlayerPrefs不在Android或编辑器上工作
我对Android上的PlayerPrefs有问题。我希望我的教程只显示一次,因此我编写了以下代码:C# PlayerPrefs不在Android或编辑器上工作,c#,android,unity3d,game-engine,C#,Android,Unity3d,Game Engine,我对Android上的PlayerPrefs有问题。我希望我的教程只显示一次,因此我编写了以下代码: void Awake(){ firstTime = false; hasPlayed = PlayerPrefs.GetInt ("hasPlayed"); if (hasPlayed == 0) { firstTime = true; } else { PlayerPrefs.Set
void Awake(){
firstTime = false;
hasPlayed = PlayerPrefs.GetInt ("hasPlayed");
if (hasPlayed == 0) {
firstTime = true;
} else {
PlayerPrefs.SetInt ("hasPlayed", 1);
firstTime = false;
PlayerPrefs.Save ();
}
}
在手机上构建和测试后,apk不会在/data或任何内容上创建任何文件夹,因此,每次我运行游戏时,教程都会显示出来。
PlayerPrefs.GetInt
采用另一个参数,如果提供的键不存在,则可以使用该参数返回值。检查hasPlayed
键是否存在,默认值为0
。如果该键不存在,它将返回默认值0
如果返回0
,则将hasPlayed
设置为1
,然后播放教程。如果它返回1
,这意味着该教程以前已经播放过。类似于问题,但需要稍加修改
下面是它的外观:
void Start()
{
//Check if hasPlayed key exist.
if (PlayerPrefs.GetInt("hasPlayed", 0) == 1)
{
hasPlayed();
}
else
{
//Set hasPlayed to true
PlayerPrefs.SetInt("hasPlayed", 1);
PlayerPrefs.Save();
notPlayed();
}
}
void hasPlayed()
{
Debug.Log("Has Played");
//Don't do anything
}
void notPlayed()
{
Debug.Log("Not Played");
//Play your tutorial
}
//Call to reset has played
void resetHasPlayed()
{
PlayerPrefs.DeleteKey("hasPlayed");
}
尝试记录
hasPlayed
的值。您还可以尝试将第二个参数添加到GetInt(“hasPlayed”,0)代码>以确保获得0作为默认值。您只是忘记了上的“、0”GetInt@Cabrra是的,PlayerPrefs.HasKey
可以使用。事实上,我特意使用了PlayerPrefs.GetInt
,这样可以进一步扩展。例如,大多数游戏都有不同的级别,每个级别都有教程。通过添加else if(PlayerPrefs.GetInt(“hasPlayed”,0)==2),可以很容易地扩展上面的代码,以检查播放器上一次播放的教程和下一次播放的教程。您可以添加尽可能多的教程PlayerPrefs.HasKey
无法单独完成此操作,仍然需要将PlayerPrefs.GetInt
与它结合使用,这会使代码变长。另外GetInt(字符串键,int defaultValue)代码>在发动机罩中执行PlayerPrefs.HasKey
。它缩短了代码PlayerPrefs.HasKey
仅当您只想知道该键是否存在时才需要。在我的例子中,我想知道它是否存在,并在不使用两个函数的情况下获取值。完美,这条语句:PlayerPrefs.GetInt(“hasPlayed”,0)==1完成了这项任务。谢谢!