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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://tools.continis.io/scriptable-object-tools/intro.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
