> For the complete documentation index, see [llms.txt](https://tools.continis.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tools.continis.io/scriptable-object-tools/intro.md).

# Intro

<div align="left" data-full-width="false"><figure><picture><source srcset="/files/0xVSldRVb8Gr6pLOnkOf" media="(prefers-color-scheme: dark)"><img src="/files/G3CgD3VT7Qusij7cEyuL" alt=""></picture><figcaption></figcaption></figure></div>

:link: Available on the [**Unity Asset Store**](https://bit.ly/sotools_as)

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.

[Shared Values](/scriptable-object-tools/components/sharedvalues.md)

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

[Runtime Anchors](/scriptable-object-tools/components/runtimeanchors.md)

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.

[Events](/scriptable-object-tools/components/events.md)

Events with zero or more arguments, that can be used as channels of communication between objects.

## Utilities

These are base classes that you can derive from.

[ManagedScriptableObject](/scriptable-object-tools/utilities/managedscriptableobject.md)

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").

[DescriptiveScriptableObject](/scriptable-object-tools/utilities/descriptivescriptableobject.md)

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