Scriptable Object

Niraj Karki
3 min readJan 25, 2024


If you’re just starting your journey into game development with Unity, you’ve probably heard about Scriptable Objects. They’re an essential and powerful feature in Unity that can enhance your game architecture and make your code more flexible and maintainable. In this article, we’ll break down Scriptable Objects, explore their benefits, and understand how they can simplify game development for beginners.

What Are Scriptable Objects?

In Unity, a Scriptable Object is a data container that allows you to store and share data between different parts of your game. Unlike traditional MonoBehaviour scripts attached to game objects, Scriptable Objects are assets that live in your project’s assets folder. They don’t have a presence in the scene hierarchy and are not bound to a specific GameObject.

Creating a Scriptable Object:

Creating a Scriptable Object is straightforward. In Unity’s Project window, right-click, navigate to “Create,” and select “Scriptable Object.” You can then choose a scriptable object template based on your needs, such as a simple asset or a singleton-like script.

Benefits of Scriptable Objects:

Decoupling Data from Code:

Scriptable Objects help decouple your data from the code that manipulates it. This separation allows for a more modular and flexible game architecture. For example, you can create a Scriptable Object to hold player stats, making it easy to update and share information without directly affecting the player’s GameObject.

Easy Configuration and Maintenance:

Since Scriptable Objects are assets, you can easily configure and maintain them through the Unity Editor. This makes it simple to tweak settings, balance gameplay, or update variables without diving into the code. For instance, you might create a Scriptable Object to manage game settings, such as difficulty level or audio preferences.

Reusable and Shareable Logic:

Scriptable Objects facilitate the creation of reusable and shareable logic. You can design a Scriptable Object to encapsulate a particular behavior, such as a spawning system or an inventory manager. This allows you to reuse the same logic across multiple GameObjects without duplicating code.

Event-driven Programming:

Scriptable Objects are excellent for implementing event-driven programming. You can use them to broadcast messages or events throughout your game. For instance, a Scriptable Object could trigger an event when a player scores a point, allowing various systems to respond without direct dependencies.

Practical Example: Player Stats

Let’s take a look at a simple example of using a Scriptable Object to manage player stats.

  1. Create a new Scriptable Object called “PlayerStats” with attributes like health, attack, and defense.
  2. Attach this Scriptable Object to the player GameObject.
  3. Update your player’s code to reference and utilize the values stored in the “PlayerStats” Scriptable Object.


Scriptable Objects are a valuable tool for beginners and experienced developers alike. By using them to organize and manage your game’s data, you can create more maintainable, flexible, and scalable projects. As you continue your journey in Unity game development, exploring the potential of Scriptable Objects will undoubtedly enhance your coding practices and streamline your workflow.