ScriptableObject Tools is a collection of tools to structure gameplay using the power of ScriptableObjects. By using ScriptableObjects as the glue between different parts of the game, you can:

  • Solve cross-scene communication.

  • Create gameplay that is possible to test in isolation, improving iteration time.

  • Allow designers to tweak gameplay in the editor, even at runtime.

All of this using consolidated Unity workflows - which means they will work on all platforms, and with future Unity versions.

Main components

ScriptableObject Tools is made of different components. You can find the documentation for each one of them in individual pages below.

  • They hold one value, and can be used to describe a primitive value (int, float, bool, etc.) that is shared among different objects.

  • They hold a reference to a Unity component that is only available at runtime. Once the game enters Play Mode, scripts can write and read from the value.

  • Zero or one-argument events, that can be used as channels of communication between objects.


These are base classes that you can derive from.

  • A base type to create a ScriptableObject that can reset itself when exiting Play Mode, thus making it compatible with Unity's Enter Play Mode Options (and specifically with "No domain reload").

  • A ScriptableObject with an editor-only description to let developers clarify its use.

Last updated