Saving game question.

Hi,
Story :- I have researched saving game in Unity3D is not so easy as loading a level (hehe).I came to know about PlayerPrefs, the information is spread all over internet but its not very educational, so i thought checking Unity Support i read it and i was like ‘WOOSH’ it got over my head, so i was thinking that if someone can tell me how can i save game.

The real question :- Making a game for android and ios , wants to make levels like angry birds… like defeated a level the next level opens up and scores are saved, now from the menu i can select which level i would like to play.

No, I think he is asking how could he save highscores to PlayerPrefs.

actually i want to save the highscore of the level + plus if the player beats the level the next level should open(that i can do) but it resets when the game closes and opens again

In that case you wont need to store the variable with PlayerPrefs, you can just use a float or int variable to display the highscore and a boolean variable to define whether the level has been completed. PlayerPrefs is used to save scores etc so that they will be remembered the next time you start the game again. Setting a highscore shouldn't be too hard - if you already have a scoring system then all you need to do is compare any new score with the highscore: if(Score > LevelHighScore){ LevelHighScore = Score; }

You have to include the assembly in your project. That means you have to copy it into your assets folder. Keep in mind that it might has several dependencies which are also required. Also keep in mind that you should look up the licences and sharing rules which might apply to those assemblies. First you should check if that assembly has a Mono implementation, if so, use that one.

1 Answer

1

You can use PlayerPrefs to store and check a variable:

var completed = true;

function OnLevelComplete() {
    // Save boolean using PlayerPrefs
    PlayerPrefs.SetInt("completed", completed?1:0);
}


function IsLevelComplete() {
    // Get boolean using PlayerPrefs
    completed = PlayerPrefs.GetInt("completed")==1?true:false;
}

You may want to replace the boolean variable with a float using PlayerPrefs.SetFloat("level", LevelNumber); and PlayerPrefs.GetFloat("level");

Got it , TY