Variables! The Building Blocks of Programming

What are variables?

Variables are buckets of data. A variable holds a singular type of data for a specific purpose and you can access or update the data value stored in a variable through code.

How to use them?

To create a variable in your C# script in Unity, you need the following:

Choose level of Access

When creating a variable, you have to set the level of access. Should any other part of your project have direct access to this variable or just this script? The two main levels of access are:

In general, it’s best practice to keep your variables private unless there is a specific need for broader access. Even then, there are often other ways to access a variable from other scripts while keeping them private.

SerializeField attribute

If you need to access your variable in the Inspector, but do not need to allow access to other scripts, you can add the SerializeField attribute to your private variable.

SerializeField attribute

To do this, enter SerializeField in square brackets on the line above your variable declaration.

Choose your Data Type

When creating a variable, you need to determine what kind of data will be stored in that variable. Four of the elementary data types are listed below, along with the keyword you’ll use to refer to them in your script:

You can also store the reference to an object or a component in a variable by setting the data type to the name of the object or component (ie. Transform).

Choose your Name

Lastly, to create a variable, you need to name it. To make it easier to read and debug your script, be sure to use descriptive and unique variables names. Also, it is common practice to add a notation to your variable name to identify private variables. Depending on the coding standards you follow, you can precede your variable name with an “m” or an underscore ( _ ) when it is a private variable. This will also make it easier to identify private or public variables throughout your script, without referring back to the line where you created the variable.

Tying it all together

To actually create a variable in your script, initialize it in following format:

access-modifier data-type-keyword variable-name

Examples of initializing variables

To assign a value to a variable, you use the equal sign (=), which is called the assignment operator. The argument (or variable) to the left of the assignment operator will take the value provided to the right.

Examples of assigning values to variables

You can assign a value when you initialize the variable, but it is not required. If no value is assigned when the variable is initialized, it will take on the default value for the data type (ie. 0 for integers and floats).

Why are variables so important?

Variables allow you easily change the behavior or outcome of your scripts. You can reuse code with different inputs to get different outputs. Variables can also help describe what your code is doing. Take this Player script excerpt for example:

Excerpt from Player script showing _speed variable

With speed as a variable instead of a hard-coded number, I can easily adjust the value of speed to change how the player moves without editing the Player script:

Adjusting the value of the Speed in the Inspector

If speed was not a variable, I would have to go into the script, find the line where the speed was hard-coded and update the value from 5 to 10. Then again, from 10 to 25.

Example of line with speed as a hard-coded value

In a long script, it would be hard to remember that 5 is the speed value. And if I was using the speed in any other lines, I would have to manually update each line. By using a unique and descriptive variable name, I know the purpose of the value and can easily locate other uses throughout the script by searching for variable name.

If that doesn’t convince you, I could also reuse the Player script to create multiple Player objects and set each with a different value of Speed in the Inspector:

Example of multiple Player objects with different Speed values

Without the variable for speed, I would need to write a different script for each player with the different speed values hard-coded.

If you haven’t caught on yet, variables are cool (kind of like fezzes).