# PersistentVariablesSource

> Provides global or local values that do not need to be passed in as arguments when formatting a string. The smart string should take the format {groupName.variableName}. e.g {global.player-score}. Note: The group name and variable names must not contain any spaces.

## Definition

* **Type:** Class
* **Namespace:** [Unity.SmartStrings.Extensions](/engine/6000.7/script-reference/unity/smartstrings/extensions.md)
* **Assembly:** UnityEngine.SmartStringsModule
* **Implements:** [ISource](/engine/6000.7/script-reference/unity/smartstrings/core/extensions/isource.md), [IDictionary\<string, VariablesGroupAsset>](https://learn.microsoft.com/dotnet/api/system.collections.generic.idictionary-2), [ICollection\<KeyValuePair\<string, VariablesGroupAsset>>](https://learn.microsoft.com/dotnet/api/system.collections.generic.icollection-1), [IEnumerable\<KeyValuePair\<string, VariablesGroupAsset>>](https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1), [IEnumerable](https://learn.microsoft.com/dotnet/api/system.collections.ienumerable), [ISerializationCallbackReceiver](/engine/6000.7/script-reference/unityengine/iserializationcallbackreceiver.md)

```csharp
public class PersistentVariablesSource : ISource, IDictionary<string, VariablesGroupAsset>, ICollection<KeyValuePair<string, VariablesGroupAsset>>, IEnumerable<KeyValuePair<string, VariablesGroupAsset>>, IEnumerable, ISerializationCallbackReceiver
```

## Properties

| Property                                                                                                            | Description                                                                                                                                                            |
| ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Count](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/count.md)           | The number of [VariablesGroupAsset](/engine/6000.7/script-reference/unity/smartstrings/persistentvariables/variablesgroupasset.md) that are used for global variables. |
| [IsReadOnly](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/isreadonly.md) | Implemented as part of IDictionary but not used. Always returns `false`.                                                                                               |
| [this\[\]](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/item.md)         | The global variable group that matches `name`.                                                                                                                         |
| [Keys](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/keys.md)             | The global variable group names.                                                                                                                                       |
| [Values](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/values.md)         | The global variable groups in this source.                                                                                                                             |

## Static Properties

| Property                                                                                                            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [IsUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/isupdating.md) | Whether [PersistentVariablesSource.BeginUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/beginupdating.md) has been called without a matching [PersistentVariablesSource.EndUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdating.md). This can be used when updating the value of multiple [IVariable](/engine/6000.7/script-reference/unity/smartstrings/persistentvariables/ivariable.md) in order to do a single update after the updates instead of 1 per change. |

## Methods

| Method                                                                                                                    | Description                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| [Add](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/add.md)                     | Adds a global variable group to the source.                                                                 |
| [Clear](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/clear.md)                 | Removes all global variables.                                                                               |
| [ContainsKey](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/containskey.md)     | Returns `true` if a global variable group is found with the same name.                                      |
| [CopyTo](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/copyto.md)               | Copies all global variable groups into the provided array starting at `arrayIndex`.                         |
| [GetEnumerator](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/getenumerator.md) | Returns an enumerator for all the global variables in the source.                                           |
| [Remove](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/remove.md)               | Removes the group with the matching name.                                                                   |
| [TryGetValue](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/trygetvalue.md)     | Returns `true` if a global variable group could be found with a matching name, or `false` if one could not. |

## Static Methods

| Method                                                                                                                    | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [BeginUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/beginupdating.md) | Indicates that multiple [IVariable](/engine/6000.7/script-reference/unity/smartstrings/persistentvariables/ivariable.md) will be changed and localized string should wait for [PersistentVariablesSource.EndUpdate](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdate.md) before updating. See [PersistentVariablesSource.EndUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdating.md) and [PersistentVariablesSource.EndUpdate](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdate.md). Note: [PersistentVariablesSource.BeginUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/beginupdating.md) and [PersistentVariablesSource.EndUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdating.md) can be nested, [PersistentVariablesSource.EndUpdate](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdate.md) will only be called after the last [PersistentVariablesSource.EndUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdating.md). |
| [EndUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdating.md)     | Indicates that updates to [IVariable](/engine/6000.7/script-reference/unity/smartstrings/persistentvariables/ivariable.md) have finished and sends the [PersistentVariablesSource.EndUpdate](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdate.md) event. Note: [PersistentVariablesSource.BeginUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/beginupdating.md) and [PersistentVariablesSource.EndUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdating.md) can be nested, [PersistentVariablesSource.EndUpdate](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdate.md) will only be called after the last [PersistentVariablesSource.EndUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdating.md).                                                                                                                                                                                                                                                                                                                                       |
| [UpdateScope](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/updatescope.md)     | Creates a [PersistentVariablesSource.BeginUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/beginupdating.md) and [PersistentVariablesSource.EndUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdating.md) scope.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |

## Static Events

| Member                                                                                                            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [EndUpdate](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdate.md) | Raised after the final [PersistentVariablesSource.EndUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdating.md) call. This can be used when you wish to respond to value change events but wish to do a single update at the end instead of 1 per change. For example, if you wanted to change the value of multiple global variables that a smart string was using then changing each value would result in a new string being generated, by using begin and end  the string generation can be deferred until the final change so that only 1 update is performed. |

## Structs

| Struct                                                                                                                                            | Description                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [PersistentVariablesSource.ScopedUpdate](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/scopedupdate.md) | Encapsulates a [PersistentVariablesSource.BeginUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/beginupdating.md) and [PersistentVariablesSource.EndUpdating](/engine/6000.7/script-reference/unity/smartstrings/extensions/persistentvariablessource/endupdating.md) call. |
