- Home /
PlayerPrefs saving, but not loading correctly
I'm currently working on a game where you collect gold. As you pick up each gold, the variable in increased and saved out to playerprefs. I know this works because immediately afterwards I get the variable back out of playerprefs and it is correct. However, upon loading a different scene and loading the playerprefs, the variable is ALWAYS 1. It never gets updates correctly. Can anyone see the issue here?
hitCount++;
PlayerPrefs.SetInt("gold_collected_" + Chapter + "_" + currentLevel + "", hitCount);
PlayerPrefs.Save();
int temp = PlayerPrefs.GetInt("gold_collected_" + Chapter + "_" + currentLevel + "", 0);
print (temp);
The loading is just a straight forward GetInt that will set to 0 if there is none, however it always retrieves 1 from the playerprefs. As this point, the number should be 3.
chapterStats[chapter - 1].levelStats[level - 1].boxesCollected = PlayerPrefs.GetInt("gold_collected_" + chapter + "_" + level + "", 0);
Answer by Bunny83 · Apr 15, 2014 at 10:15 AM
You can be sure that PlayerPrefs stores the value that you pass ;) It's usually better to wrap the playerprefs calls in a method so you don't have mistyped names:
public static void StoreGoldCollected(int aChapter, int aLevel, int aGold)
{
// Debug.Log("Storing gold collected: (" + aChapter+" / " + aLevel + "): " + aGold)
PlayerPrefs.SetInt("gold_collected_" + aChapter + "_" + aLevel, aGold);
}
public static int ReadGoldCollected(int aChapter, int aLevel)
{
return PlayerPrefs.GetInt("gold_collected_" + aChapter + "_" + aLevel, 0);
}
Now you can simply uncomment that Debug.log and you see what get stored when for which chapter / level.
edit:
important!: Make sure you only use those two methods to read or write the gold amount. Never use PlayerPrefs directly since that would bypass this check.
The Debug.Log has several advantages:
You can see if you store the correct amount in the correct variable (chapter / level)
If you find a log that shouldn't happen at a certain point you get the stacktrace in the console (when you select the log) which tells you where you called that method which helps you to track down the root of the problem.
Your answer
Follow this Question
Related Questions
Cloud recognition in Vuforia 0 Answers
PlayerPrefs not Loading all the Members...is anybody else having this issue?? 1 Answer
Highscores don't always get saved playerprefs unity3d 0 Answers
How to save and display players times using Playerprefs in Javascript? 1 Answer
Game/editor stops responding when going to Highscores 0 Answers