in Tutorial, Unity

Unity – Reusable Singleton Tutorial

Singletons are very useful in Unity. They can be used to store variable values and keep it after changing Scenes, e.g.

I like to use a MyApplication class as Singleton in my games, managing all variables, objects and configurations that need to persist throughout the game.

Searching for Unity Singleton Patterns on Google, most of the time you will find:

  • Simple and small codes, but with some issues;
  • Long codes that make your classes “dirty”.

But then I found a cool pattern in this wiki

I took this pattern, made some changes and now I share here what I called as Reusable Singleton.

It’s a Singleton design pattern that can be reused extending it on subclasses. Using this script, You will not need to write the singleton initializers in your classes. Just make your class extends Singleton and it will automatically have the singleton features! Just 1 line of code!

This is a MonoBehaviour script, so you can use the Coroutines.

Creating Singleton Base Class

First, you need to create the “Singleton.cs” script. All your own singleton classes will extend it. (You can also download this script here)

Creating Your Class

Create your class that you want to be a singleton, and make it extends Singleton.

Usage Example

Now you can call your singleton class by Instance:


Now you can create multiple singleton classes, just extending Singleton.cs.
Say goodbye to rewriting Singleton methods over and over again.

You can download the source codes here.


Write a Comment


    • Hi Daniel, thanks for the feedback.
      The preload scene is not necessary. When you call the singleton object at the first time, it will create itself and remains persistent.
      So you can write any initialization code on your singleton awake’s function, and it doesn’t matter what scene it’s called in, it will initialize itself.