# InMemoryVariableStorage

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

Inherits from [`VariableStorageBehaviour`](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.variablestoragebehaviour)

## Summary

A simple implementation of VariableStorageBehaviour.

```csharp
public class InMemoryVariableStorage : VariableStorageBehaviour, IEnumerable<KeyValuePair<string, object>>
```

## Remarks

This class stores variables in memory, and is erased when the game exits.

This class also has basic serialization and save/load example functions.

You can also enumerate over the variables by using a `foreach` loop:

```
// 'storage' is an InMemoryVariableStorage
foreach (var variable in storage) {
string name = variable.Key;
System.Object value = variable.Value;
}
```

Note that as of v2.0, this class no longer uses Yarn.Value, to enforce static typing of declared variables within the Yarn Program.

## Fields

| Name                                                                                                                                                      | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| [showDebug](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.showdebug)       |             |
| [TypeMappings](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.typemappings) |             |

## Methods

| Name                                                                                                                                                                                                    | Description                                                                                                           |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [Clear()](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.clear)                                                           | Removes all variables from storage.                                                                                   |
| [Contains(string)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.contains)                                               | returns a boolean value representing if the particular variable is inside the variable storage                        |
| [DeserializeAllVariablesFromJSON(string)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.deserializeallvariablesfromjson) | Import a JSON string into variable storage, like when loading save game data.                                         |
| [GetDebugList()](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.getdebuglist)                                             |                                                                                                                       |
| [LoadFromFile(string)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.loadfromfile)                                       | Load JSON data from a file, then deserialize as variables.                                                            |
| [LoadFromPlayerPrefs()](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.loadfromplayerprefs-1)                             | Load JSON data from Unity's built-in PlayerPrefs with default playerPrefsKey, and deserialize as variables.           |
| [LoadFromPlayerPrefs(string)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.loadfromplayerprefs-2)                       | Load JSON data from Unity's built-in PlayerPrefs with defined playerPrefsKey parameter, and deserialize as variables. |
| [SaveToFile(string)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.savetofile)                                           | Serialize all variables to JSON, then write the data to a file.                                                       |
| [SaveToPlayerPrefs()](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.savetoplayerprefs-1)                                 | Serialize all variables to JSON, then save data to Unity's built-in PlayerPrefs with default playerPrefsKey.          |
| [SaveToPlayerPrefs(string)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.savetoplayerprefs-2)                           | Serialize all variables to JSON, then save data to Unity's built-in PlayerPrefs under playerPrefsKey parameter.       |
| [SerializeAllVariablesToJSON(bool)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.serializeallvariablestojson)           | Export variable storage to a JSON string, like when writing save game data.                                           |
| [SetValue(string,bool)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.setvalue-3)                                        |                                                                                                                       |
| [SetValue(string,float)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.setvalue-2)                                       |                                                                                                                       |
| [SetValue(string,string)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.setvalue-1)                                      |                                                                                                                       |
| [TryGetValue(string,T)](https://docs.yarnspinner.dev/2.1/api/csharp/yarn.unity/yarn.unity.inmemoryvariablestorage/yarn.unity.inmemoryvariablestorage.trygetvalue)                                       | Retrieves a `Value` by name.                                                                                          |
