- Home /
PlayerPrefs won't save.
Hi,
I trying to save scores, but for some reason SetInt will not save unless I put in a literal string and int. private void AddScore() {
for (int i = 1; i <= 25; i++)
{
if (PlayerPrefs.HasKey(i.ToString()))
{
Debug.Log(PlayerPrefs.HasKey(i.ToString())); // working as exspected
names.Add(PlayerPrefs.GetString(i.ToString()));
scores.Add(PlayerPrefs.GetInt(i.ToString()));
}
}
if (scores.Count < 25)
{
Debug.Log("made it"); // works
scores.Add(Controls.SCORE * 50);
names.Add(name);
}
for (int i = 0; i < scores.Count; i++)
{
string index = (i+1).ToString();
Debug.Log(i + " " + scores[i] + " " + index); // all return proper values
Debug.Log(index + " index");
//PlayerPrefs.SetInt(index, scores[i]); /. won't work
PlayerPrefs.SetInt("1", 100); // works
PlayerPrefs.SetString(index, names[i]);
}
PlayerPrefs.Save();
Debug.Log(PlayerPrefs.GetInt("0"));
Debug.Log(PlayerPrefs.GetInt("1")); // ONLY returns a value if I use both "1" AND 100 if I use index or scores it will not save..
Debug.Log(PlayerPrefs.GetInt("2"));
showScores = true;
}
So as you can see where I save it, if I attempt to use any sort of variable in SetInt it breaks and will not save. I have even tried hard coding 1 - 5 with hard coded numbers and all of them save just fine.
I just wanted to retest before posting this but now my head hurts even more....
for (int i = 0; i < scores.Count; i++)
{
string index = (i+1).ToString();
Debug.Log(index + " index");
PlayerPrefs.SetInt("1", 342);
PlayerPrefs.SetString(index, names[i]);
}
This will work. If I add index = "1"; it breaks.. wtf is that? the code I added was this exactly..
for (int i = 0; i < scores.Count; i++)
{
string index = (i+1).ToString();
Debug.Log(index + " index");
index = "1";
PlayerPrefs.SetInt("1", 342);
PlayerPrefs.SetString(index, names[i]);
}
Any and all help would be greatly appreciated. It would also stop my head from exploding. Also this is the only function with any playerprefs being called.
Thanks in advance.
Answer by DaveA · Jan 10, 2014 at 12:09 AM
Are you trying to save both an int and a string to the same index name, thinking
"1" : 342
"1" : "Joe"
If so, that won't fly. It will save one or the other (99% sure of that....)
lol I feel like an idiot. For some reason I assumed they were separate. You were right though. Easy enough to fix :P
I assume the types are just for casting?
Thanks for your help!
Your answer
Follow this Question
Related Questions
Asset store Crash how do I fix ? 1 Answer
Unity Line Renderer drawing extra line to another point.. 0 Answers
Unity assets not importing from folder; scripts can't be created 1 Answer
Adding a ui text as a child of canvas disables all child buttons and makes them break 1 Answer
Animation load bug 0 Answers