0

実績クラスの値の 1 つに localStorage を実装したいと考えています。つまり、基本的にこのクラスが行うことは、バックエンド データベースからプレーヤー データを取得し、プレーヤーが特定のタスクをクリアすると、実績のロックが解除されるということです。今のところ、次のように定義された実績は1つだけです

実績:{ 1:{name:'First_Achievement',status:1} },

ステータス フィールドは、実績のフラグのように機能します。ステータスが 1 の場合、アチーブメントはまだロックされており、ステータスが 0 になった場合、アチーブメントはロック解除されます。

これは、実績が解除されたときのスケルトン コードです。このコード ブロックは、私のゲームで 10 秒ごとにチェックされ、特定のタスクがクリアされて実績のロックが解除されているかどうかを確認します。

      checkAchievements:function(){ 
      this.probsSolved = this.getTeamProbSolved(); 
      if( this.Achievements[1].status == 1 && this.probsSolved.length >=3)  
          this.triggerAchievement(1); // spawns achievement 1 on screen                   
          this.Achievements[1].status = 0; 
      },

したがって、ゲームを実行すると、これは正常に機能します。「this.Achievements[1].status」は、次回ゲームを開始するまで 0 に設定されます。「this.Achievements[1].status」を 1 に戻し、ステータスが 1 に戻されると if ループが再び実行されます。ゲームを実行するたびにではありません。

では、ここで localStorage を実装するにはどうすればよいでしょうか。「Achievements.status」フィールドを localStorage に格納して、if ループが毎回ではなく 1 回だけ実行されるようにする必要があると思います。または、これを実装できる他の方法はありますか?

私は次のことを試しました

localStorage.setItem(this.Achievements[1].status,0);

しかし、それは機能しません

どんな助けでも大歓迎です!ありがとう!

4

1 に答える 1