The DynamicVariables module helps you handle variables and values in a more dynamic and flexible way, as well as making it easier to change runtime values over time.
Within DuskModules, DynamicVariables is used by almost every module with a visible component. Every setting for a visual effect, sound, or movement can be swapped to use a reference to a ScriptableObject instead, allowing you to define gameplay settings shared throughout your project.
Dynamic Variables has a dependency on the UtilityCollection module.
One half of it, called Referenceable Variables, allows you to link simple variables using the Unity Inspector GUI. This way you can keep gameplay settings as assets in your project hierarchy. You can create lists of sprites, colors, floats, vectors, strings, or anything else. You can also create assets containing only a color, float, string or int value, or any other type. You can Drag & Drop the assets to your gameplay behaviours, allowing them to share the same base settings. Any changes and tweaks to the settings done are persisted, even while playtesting.
The other half of it, called Runtime Variables, allows you to add runtime values to your behaviours. A runtime value is a wrapper for a value, usually with an update method. Call the update of it in your behaviour's own update, and you get self-updating values! This saves you from rewriting a lot of redundant code for making one value match a target value, a value following a Sinus wave, a color value morphing from one to another, or other similar 'moving' effects.
Don't forget to add using DuskModules.DynamicVariables; to any script using the module.