Why will Playerprefs not save my score on Android / iOS? (685476)

So, here’s my code…

public void OnEnter()
        {
            anim.SetTrigger("fadOpagueInteractive");
            animImageGameOver.SetTrigger("Entrance");
            animScoreParent.SetTrigger("Entrance");
            animToolbox.SetTrigger("ToolboxEntrance");
  
            playLarry.LarryFallPrep();
  
            if (PlayerPrefs.HasKey(highScoreSlot)) scoreBest = PlayerPrefs.GetFloat(highScoreSlot);
            scoreBestDisplay.text = scoreBest.ToString();
  
            StartCoroutine(CountUpScore());
          
            adMob.ShowBanner();
  
            GC.Inst.FadeToBlackTransp();
        }


    public  void ScoreAtGameOver (int scoreFromGame)
        {
            score = scoreFromGame;
            scoreCountUp = 0;
            scoreDisplay.text = scoreCountUp.ToString();-
  
            if (score > scoreBest)
            {
                scoreBest = score;
                PlayerPrefs.SetFloat(highScoreSlot, score);
              
                imageNewBG.SetActive(true);
                partSysBestScore.Play();
                aud.PlayOneShot(celebrate);
            }
        }

This last is triggered as the player comes out of the play state and enters the game over state (where the score is displayed, the player can choose to restart etc.)

Unfortunately, the device (A Samsung Tab-A) seems to record the score somewhat unreliably - it can keep the score for a week or so, then it suddenly seems to wipe the score between a couple of games in a row.

Is Playerprefs the wrong resource for this? Should I just go ahead and do some serialization?

Thanks in advance,

–Rev

You need to call Playerprefs.Save() after setting a value.

Don’t forget to call PlayerPrefs.Save(); just in case. It’s not always needed, but it guarantees a save vs the auto save that Unity does.

I haven’t had issues with PlayerPrefs myself. I suspect something else is going on. (assuming save isn’t the answer)

You could certainly use a different method, but I suggest printing out the values and using log viewer to view the results when on a tablet. Unity Asset Store - The Best Assets for Game Making

Great reference BremyBBW, and many thanks to Brathnann - this seems to have solved the problem. That said, I’ll keep the log viewer in my backpocket…!

–Rev