# VariableStorageBehaviour

Class in [Yarn.Unity](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity)

Inherits from `UnityEngine.MonoBehaviour`

## Summary

A `UnityEngine.MonoBehaviour` that a [DialogueRunner](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.dialoguerunner) uses to store and retrieve variables.

```csharp
public abstract class VariableStorageBehaviour : MonoBehaviour, Yarn.IVariableStorage
```

## Remarks

This abstract class inherits from `UnityEngine.MonoBehaviour` , which means that subclasses of this class can be attached to `UnityEngine.GameObject` s.

## Methods

| Name                                                                                                                                                                                                                    | Description                                                                                                                  |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| [AddChangeListener(System.Action\<string, object>)](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.addchangelistener-2)                 | Registers a delegate that will be called when any variable is modified.                                                      |
| [AddChangeListener(string,Action)](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.addchangelistener-1)                                  | Registers a delegate that will be called when the variable `variableName` is modified.                                       |
| [Clear()](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.clear)                                                                         |                                                                                                                              |
| [Contains(string)](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.contains)                                                             | Returns a boolean value representing if a particular variable is inside the variable storage.                                |
| [GetAllVariables()](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.getallvariables)                                                     | Provides a unified interface for exporting all variables. Intended to be a point for custom saving, editors, etc.            |
| [GetVariableKind(string)](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.getvariablekind)                                               |                                                                                                                              |
| [SetAllVariables(FloatDictionary,StringDictionary,BoolDictionary,bool)](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.setallvariables) | Provides a unified interface for loading many variables all at once. Will override anything already in the variable storage. |
| [SetValue(string,bool)](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.setvalue-3)                                                      |                                                                                                                              |
| [SetValue(string,float)](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.setvalue-2)                                                     |                                                                                                                              |
| [SetValue(string,string)](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.setvalue-1)                                                    |                                                                                                                              |
| [TryGetValue(string,T?)](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.trygetvalue)                                                    |                                                                                                                              |

## Properties

| Name                                                                                                                                                                            | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| [Program](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.program)                               |             |
| [SmartVariableEvaluator](https://docs.yarnspinner.dev/3.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour/yarn.unity.variablestoragebehaviour.smartvariableevaluator) |             |
