2016-07-27 27 views
1

AndroidのPlayerPrefsに問題があります。PlayerPrefsがAndroidやエディタで動作しない

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

は一度電話で構築され、テストされ、APKは/データまたは何でも上の任意のフォルダを作成していないし、その結果、チュートリアルが毎回表示されます。私は、私はこのコードを書いた私のチュートリアルでは、一度だけを表示したいです私はゲームを実行します。

+0

:ここ

は、それがどのように見えるかです。 2番目のパラメータを 'GetInt(" hasPlayed "、0);'に追加して、デフォルト値として0が得られるようにすることもできます。 –

+0

あなたはちょうどGetIntの "、0"を忘れました。 – Fattie

答えて

1

PlayerPrefs.GetIntは、提供されたキーがではない場合、が存在する場合に値を返すために使用できる別のパラメータを取ります。 hasPlayedキーが存在し、デフォルト値が0であることを確認してください。キーが存在しない場合は、デフォルト値の0が返されます。

0を返す場合は、hasPlayed1に設定し、チュートリアルを再生します。 1が返された場合、チュートリアルが以前に再生されたことを意味します。 thisと似ていますが、少し修正する必要があります。 hasPlayed` `の値をログに記録するようにしてください

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

@Cabrraはい、 'PlayerPrefs.HasKey'を使うことができます。実際には 'PlayerPrefs.GetInt'を実際に使っていますので、これをさらに拡張することができます。たとえば、ほとんどのゲームは、各レベルのチュートリアルで異なるレベルを持っています。上記のコードは、 'else if(PlayerPrefs.GetInt(" hasPlayed "、0)== 2)'を追加することで、プレイヤーが最後に演奏したチュートリアルと次に再生するチュートリアルを確認するために簡単に拡張できます。できるだけ多くのチュートリアルを追加できます。 'PlayerPrefs.HasKey'はこれだけではできませんし、' PlayerPrefs.GetInt'と組み合わせてコードを長くする必要があります。 – Programmer

+0

また、 'GetInt(string key、int defaultValue);'はフード内で 'PlayerPrefs.HasKey'を実行します。コードを短くします。 'PlayerPrefs.HasKey'は、キーが存在するかどうかを知りたい場合にのみ必要です。私の場合は、それが存在するかどうかを知りたいし、2つの関数を使わずに値を取得したい。 – Programmer

+1

パーフェクト、このステートメント:PlayerPrefs.GetInt( "hasPlayed"、0)== 1はトリックを行いました。どうもありがとう! – user1423168

関連する問題