Bird
Raised Fist0
Unityframework~5 mins

PlayerPrefs for simple data in Unity

Choose your learning style10 modes available
Introduction

PlayerPrefs lets you save small pieces of data like scores or settings so they stay even after you close the game.

Saving the player's high score between game sessions.
Remembering if the player has muted the sound.
Storing the player's chosen character or skin.
Keeping track of simple game settings like difficulty level.
Syntax
Unity
PlayerPrefs.SetInt("key", value);
PlayerPrefs.SetFloat("key", value);
PlayerPrefs.SetString("key", "value");

int score = PlayerPrefs.GetInt("key", defaultValue);
float volume = PlayerPrefs.GetFloat("key", defaultValue);
string name = PlayerPrefs.GetString("key", "default");

PlayerPrefs.Save();

Use SetInt, SetFloat, or SetString to save data.

Use GetInt, GetFloat, or GetString to read data. You can give a default value if the key doesn't exist.

Examples
Saves an integer high score of 100 and reads it back, defaulting to 0 if not found.
Unity
PlayerPrefs.SetInt("HighScore", 100);
int score = PlayerPrefs.GetInt("HighScore", 0);
Saves the player's name as "Alex" and reads it back, defaulting to "Guest" if missing.
Unity
PlayerPrefs.SetString("PlayerName", "Alex");
string name = PlayerPrefs.GetString("PlayerName", "Guest");
Saves a volume level of 0.75 and reads it back, defaulting to 1.0 if not set.
Unity
PlayerPrefs.SetFloat("Volume", 0.75f);
float vol = PlayerPrefs.GetFloat("Volume", 1.0f);
Sample Program

This Unity script saves a high score, player name, and music volume when the game starts. Then it reads them back and prints them to the console.

Unity
using UnityEngine;

public class PlayerPrefsExample : MonoBehaviour
{
    void Start()
    {
        // Save data
        PlayerPrefs.SetInt("HighScore", 250);
        PlayerPrefs.SetString("PlayerName", "Sam");
        PlayerPrefs.SetFloat("MusicVolume", 0.5f);
        PlayerPrefs.Save();

        // Load data
        int highScore = PlayerPrefs.GetInt("HighScore", 0);
        string playerName = PlayerPrefs.GetString("PlayerName", "Unknown");
        float musicVolume = PlayerPrefs.GetFloat("MusicVolume", 1.0f);

        Debug.Log($"High Score: {highScore}");
        Debug.Log($"Player Name: {playerName}");
        Debug.Log($"Music Volume: {musicVolume}");
    }
}
OutputSuccess
Important Notes

PlayerPrefs is best for small, simple data like settings or scores, not big files or complex data.

Always call PlayerPrefs.Save() to make sure data is written to disk immediately.

Data saved with PlayerPrefs stays even if you close and reopen the game.

Summary

PlayerPrefs stores small data like numbers and text between game sessions.

Use Set methods to save and Get methods to load data.

Remember to call PlayerPrefs.Save() to save changes right away.

Practice

(1/5)
1. What is the main purpose of PlayerPrefs in Unity?
easy
A. To create 3D models in the game
B. To manage game physics calculations
C. To handle player input controls
D. To save small data like numbers and text between game sessions

Solution

  1. Step 1: Understand PlayerPrefs role

    PlayerPrefs is designed to store simple data like numbers and text that persist between game sessions.
  2. Step 2: Compare options with PlayerPrefs purpose

    Options A, C, and D relate to other game systems, not data storage.
  3. Final Answer:

    To save small data like numbers and text between game sessions -> Option D
  4. Quick Check:

    PlayerPrefs stores simple data = B [OK]
Hint: PlayerPrefs saves small data between sessions [OK]
Common Mistakes:
  • Confusing PlayerPrefs with input or physics systems
  • Thinking PlayerPrefs handles large files or complex data
2. Which of the following is the correct way to save an integer value 10 with key "score" using PlayerPrefs?
easy
A. PlayerPrefs.SetInt("score", 10);
B. PlayerPrefs.SaveInt("score", 10);
C. PlayerPrefs.Set("score", 10);
D. PlayerPrefs.PutInt("score", 10);

Solution

  1. Step 1: Recall PlayerPrefs method for integers

    The correct method to save an integer is SetInt with key and value.
  2. Step 2: Check method names in options

    Only PlayerPrefs.SetInt("score", 10); uses the correct method name SetInt. Others use invalid method names.
  3. Final Answer:

    PlayerPrefs.SetInt("score", 10); -> Option A
  4. Quick Check:

    SetInt saves integer = A [OK]
Hint: Use SetInt to save integers in PlayerPrefs [OK]
Common Mistakes:
  • Using incorrect method names like Set or PutInt
  • Forgetting to use quotes around the key string
3. What will be the output of this code snippet?
PlayerPrefs.SetString("playerName", "Alex");
string name = PlayerPrefs.GetString("playerName", "Unknown");
Debug.Log(name);
medium
A. Unknown
B. Error
C. Alex
D. null

Solution

  1. Step 1: Understand SetString and GetString usage

    The code saves "Alex" with key "playerName" and then retrieves it with a default value "Unknown".
  2. Step 2: Determine what GetString returns

    Since "playerName" exists, GetString returns "Alex", not the default "Unknown".
  3. Final Answer:

    Alex -> Option C
  4. Quick Check:

    GetString returns saved value = D [OK]
Hint: GetString returns saved value if key exists [OK]
Common Mistakes:
  • Assuming default value is always returned
  • Confusing SetString with SetInt or other methods
4. Identify the error in this code snippet:
PlayerPrefs.SetInt("level", 5);
int currentLevel = PlayerPrefs.GetInt("Level", 1);
Debug.Log(currentLevel);
medium
A. Key names are case-sensitive, causing default value to be returned
B. SetInt cannot be used for integers
C. GetInt requires a string key and an integer default value
D. PlayerPrefs.Save() is missing, so data won't save

Solution

  1. Step 1: Compare key names used in SetInt and GetInt

    SetInt uses key "level" (lowercase), GetInt uses "Level" (uppercase L). Keys are case-sensitive.
  2. Step 2: Understand effect of key mismatch

    Because keys differ, GetInt does not find "Level" and returns default 1 instead of 5.
  3. Final Answer:

    Key names are case-sensitive, causing default value to be returned -> Option A
  4. Quick Check:

    Case-sensitive keys cause mismatch = C [OK]
Hint: Check key spelling and case carefully [OK]
Common Mistakes:
  • Ignoring case sensitivity of keys
  • Thinking PlayerPrefs.Save() is always required immediately
5. You want to save a player's high score and retrieve it later. Which sequence of code correctly saves the score 150 and then loads it with a default of 0 if not found?
hard
A. PlayerPrefs.SetString("highScore", "150"); int score = PlayerPrefs.GetInt("highScore", 0);
B. PlayerPrefs.SetInt("highScore", 150); PlayerPrefs.Save(); int score = PlayerPrefs.GetInt("highScore", 0);
C. PlayerPrefs.SetInt(150, "highScore"); int score = PlayerPrefs.GetInt("highScore");
D. PlayerPrefs.SetInt("highScore", 150); int score = PlayerPrefs.GetInt("highScore", 100); PlayerPrefs.Save();

Solution

  1. Step 1: Save the high score correctly

    Use SetInt with key "highScore" and value 150, then call PlayerPrefs.Save() to ensure data is saved immediately.
  2. Step 2: Retrieve the high score with default

    Use GetInt with key "highScore" and default 0 to load the saved score or 0 if not found.
  3. Final Answer:

    PlayerPrefs.SetInt("highScore", 150); PlayerPrefs.Save(); int score = PlayerPrefs.GetInt("highScore", 0); -> Option B
  4. Quick Check:

    SetInt + Save + GetInt with default = A [OK]
Hint: Save with SetInt + Save(), load with GetInt and default [OK]
Common Mistakes:
  • Mixing SetString with GetInt causing type mismatch
  • Not calling PlayerPrefs.Save() after setting data
  • Swapping key and value parameters
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard