Class Variables: Variables With Multiple Sub-Variables in Unity

In Unity creating variables is simple:

public int someValue = 1;

The variable above will be shown like this in the Inspector view:

But what if you want to have multiple sub-variables in one single variable? That's easy to achieve with the Class Variables.

Class Variables are variables that use another class as a base type, giving the ability to have multiple sub-variables in one group.

It is done by using a class with the [System.Serializable] attribute.

Check the code below:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SC_ClassVariables : MonoBehaviour
{
    [System.Serializable]
    public class VariableGroup
    {
        public Transform t;
        public int someValue = 1;
        public bool someBool = false;
    }

    public VariableGroup variableGroup;
}
  • The script above defines a class called VariableGroup
  • The class VariableGroup contains multiple sub-variables
  • Note the [System.Serializable] before the class. This attribute is needed to be able to edit its variables in the inspector view.
  • And lastly, the variable variableGroup is defined, which uses the VariableGroup class.

The class values are accessed by calling the variable name followed by a dot and then the child variable name:

variableGroup.t
variableGroup.someValue
variableGroup.someBool

The class above can also be used in an array:

public VariableGroup[] variableGroup;

Suggested Articles
Introduction to Unity C# Scripting Language
Understanding Functions and Method Calls
Working with Arrays and Lists in Unity Code
Introduction to Variables and Data Types in Programming in Unity
Making Inventory and Item Crafting System in Unity
Unity Obfuscation Methods and Anti-Hack Protection
Coding a Simple Inventory System With UI Drag and Drop in Unity