Bird
Raised Fist0
Unityframework~5 mins

Variables and serialization in Unity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a variable in Unity?
A variable is a container that holds data, like numbers or text, which can change while the program runs.
Click to reveal answer
beginner
What does serialization mean in Unity?
Serialization is the process of saving an object's data so Unity can store or transfer it, like saving game settings or player progress.
Click to reveal answer
intermediate
Why use the [SerializeField] attribute in Unity?
It lets private variables show up in the Unity Editor so you can change their values without making them public.
Click to reveal answer
intermediate
What types of variables can Unity serialize by default?
Unity can serialize basic types like int, float, string, bool, and also Unity types like Vector3 and custom classes marked with [System.Serializable].
Click to reveal answer
beginner
How does serialization help with saving game data?
Serialization converts game data into a format that can be saved to a file or sent over a network, so the game can load it later exactly as it was.
Click to reveal answer
Which keyword makes a variable visible in the Unity Editor without making it public?
Aprivate
Bpublic
C[SerializeField]
Dstatic
What is the main purpose of serialization in Unity?
ATo change variable types
BTo speed up the game
CTo create variables
DTo save and load data
Which of these variable types can Unity serialize by default?
Aint, float, string
Bdelegate, event
CThread, Task
DPointer, Reference
What happens if you make a variable public in Unity?
AIt becomes visible and editable in the Unity Editor
BIt becomes hidden in the Editor
CIt cannot be serialized
DIt runs faster
Which attribute marks a custom class as serializable in Unity?
A[SerializeField]
B[System.Serializable]
C[HideInInspector]
D[NonSerialized]
Explain what variables and serialization mean in Unity and why they are important.
Think about how data is stored and changed in a game.
You got /3 concepts.
    Describe how you would make a private variable editable in the Unity Editor using serialization.
    It's about showing private data without making it public.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of serialization in Unity?
      easy
      A. To convert data into a format that can be saved or sent
      B. To create new game objects during runtime
      C. To increase the speed of the game
      D. To change the color of game objects

      Solution

      1. Step 1: Recall the definition of serialization

        Serialization means converting data into a format that can be saved or sent.
      2. Step 2: Match Unity's use of serialization

        Unity uses serialization to save game data or send it over networks.
      3. Final Answer:

        To convert data into a format that can be saved or sent -> Option A
      4. Quick Check:

        Serialization = convert data for saving/sending [OK]
      Hint: Serialization means saving or sending data format [OK]
      Common Mistakes:
      • Confusing serialization with creating objects
      • Thinking serialization changes game speed
      • Mixing serialization with visual changes
      2. Which of the following is the correct way to declare a public integer variable in a Unity C# script?
      easy
      A. int score public;
      B. int public score;
      C. public int score;
      D. public integer score;

      Solution

      1. Step 1: Recall C# variable declaration syntax

        In C#, access modifier comes first, then type, then variable name.
      2. Step 2: Check each option

        public int score; ('public int score;') follows correct order. Options A, B, C have wrong order or wrong type keyword.
      3. Final Answer:

        public int score; -> Option C
      4. Quick Check:

        Access modifier + type + name = correct declaration [OK]
      Hint: Access modifier before type before name in C# [OK]
      Common Mistakes:
      • Putting 'public' after variable name
      • Using 'integer' instead of 'int'
      • Incorrect order of keywords
      3. What will be the output of this Unity C# code?
      using UnityEngine;
      
      public class PlayerData {
          public string playerName = "Alex";
          public int level = 5;
      }
      
      public class Test : MonoBehaviour {
          void Start() {
              PlayerData data = new PlayerData();
              string json = JsonUtility.ToJson(data);
              Debug.Log(json);
          }
      }
      medium
      A. Error: JsonUtility.ToJson requires MonoBehaviour
      B. {"playerName":Alex,"level":5}
      C. {"playerName":"Alex",level:5}
      D. {"playerName":"Alex","level":5}

      Solution

      1. Step 1: Understand JsonUtility.ToJson output format

        JsonUtility converts object fields to JSON string with keys and values in quotes where needed.
      2. Step 2: Check the JSON string format

        Strings have quotes, numbers do not. {"playerName":"Alex","level":5} matches correct JSON format with quotes around "Alex" and keys.
      3. Final Answer:

        {"playerName":"Alex","level":5} -> Option D
      4. Quick Check:

        JsonUtility outputs valid JSON string [OK]
      Hint: JsonUtility outputs JSON with quotes around strings [OK]
      Common Mistakes:
      • Missing quotes around string values
      • Using invalid JSON syntax
      • Thinking JsonUtility needs MonoBehaviour object
      4. Identify the error in this Unity C# code snippet:
      using UnityEngine;
      
      public class Player {
          public int score;
      }
      
      public class Game : MonoBehaviour {
          void Start() {
              Player player = new Player();
              string json = JsonUtility.ToJson(player);
              Debug.Log(json);
          }
      }
      medium
      A. No error; code will output {"score":0}
      B. Player class must inherit from MonoBehaviour to serialize
      C. JsonUtility.ToJson requires static method call
      D. score variable must be private to serialize

      Solution

      1. Step 1: Check if Player class can be serialized

        JsonUtility can serialize plain classes with public fields, no need to inherit MonoBehaviour.
      2. Step 2: Check output of JsonUtility.ToJson

        Player's score defaults to 0, so JSON string will be {"score":0}.
      3. Final Answer:

        No error; code will output {"score":0} -> Option A
      4. Quick Check:

        Plain class with public fields serializes fine [OK]
      Hint: Public fields in plain classes serialize without MonoBehaviour [OK]
      Common Mistakes:
      • Thinking class must inherit MonoBehaviour to serialize
      • Assuming private fields serialize by default
      • Believing JsonUtility requires static context
      5. You want to save player settings including volume (float), username (string), and isFullScreen (bool) using Unity's JsonUtility. Which class definition correctly supports serialization of these variables?
      hard
      A. public class Settings { private float volume; private string username; private bool isFullScreen; }
      B. public class Settings { [SerializeField] private float volume; [SerializeField] private string username; [SerializeField] private bool isFullScreen; }
      C. public class Settings { protected float volume; protected string username; protected bool isFullScreen; }
      D. public class Settings { public float volume { get; set; } public string username { get; set; } public bool isFullScreen { get; set; } }

      Solution

      1. Step 1: Understand JsonUtility serialization rules

        JsonUtility serializes public fields or private fields marked with [SerializeField] attribute.
      2. Step 2: Evaluate each class definition

        public class Settings { protected float volume; protected string username; protected bool isFullScreen; } uses protected fields, which do not serialize. public class Settings { private float volume; private string username; private bool isFullScreen; } uses private fields without [SerializeField], so no serialization. public class Settings { [SerializeField] private float volume; [SerializeField] private string username; [SerializeField] private bool isFullScreen; } uses private fields with [SerializeField], which works. public class Settings { public float volume { get; set; } public string username { get; set; } public bool isFullScreen { get; set; } } uses properties, which JsonUtility does not serialize.
      3. Step 3: Choose best practice

        Using private fields with [SerializeField] is recommended for encapsulation and serialization.
      4. Final Answer:

        public class Settings { [SerializeField] private float volume; [SerializeField] private string username; [SerializeField] private bool isFullScreen; } -> Option B
      5. Quick Check:

        Private fields + [SerializeField] serialize correctly [OK]
      Hint: Use [SerializeField] for private variables to serialize [OK]
      Common Mistakes:
      • Assuming private fields serialize without attribute
      • Using properties instead of fields for serialization
      • Ignoring encapsulation best practices
      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