PlayerPrefs不适用于Android或编辑器

时间:2016-07-27 18:06:56

标签: c# android unity3d game-engine

我在Android上遇到PlayerPrefs问题。我希望我的教程只展示一次,所以我写了这段代码:

void Awake(){
        firstTime = false;
        hasPlayed = PlayerPrefs.GetInt ("hasPlayed");
        if (hasPlayed == 0) {
            firstTime = true;
        } else {
            PlayerPrefs.SetInt ("hasPlayed", 1);
            firstTime = false;
            PlayerPrefs.Save ();
        }
}

在手机上构建和测试后,apk不会在/ data或其他任何内容上创建任何文件夹,因此每次运行游戏时教程都会显示。

1 个答案:

答案 0 :(得分:1)

如果提供的密钥存在,则

PlayerPrefs.GetInt会使用另一个参数来返回值。检查hasPlayed密钥是否存在,默认值为0。如果密钥不存在,它将返回默认值0

如果它返回0,请将hasPlayed设置为1,然后播放您的教程。如果它返回1,则表示该教程之前已经播放过。与this问题类似,但需要进行一些修改。

以下是它的样子:

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");
 }