- To provide a simple and easy-to-use state management library for Unity.(Like Redux or Svelte.store)
- State Set/Read/Observe
- StateCollection
- DependencyState/HalfDependencyState
| class | summary | implements interface |
|---|---|---|
| ObservableState SubjectState |
A state variable that can be observed | IStateReader, IStateObserver, IStateSetter, IDisposable |
| State | A state variable that cannot be observed but is more memory-efficient than ObservableState | IStateReader, IStateSetter |
| DependencyState | A state variable that derives results from other variables and triggers them | IStateReader, IStateObserver |
| HalfDependencyState | A state variable that derive results from other variables and their own variable and trigger them | IStateReader, IStateSetter, IStateObserver |
| ObservableListState | A collection of StateVariables (internally implemented as a List) | IStateReader, IStateSetter, IStateCollectionObserver, IStateCollectionElementObserver, IStateCollectionElementSetter, IStateCollectionModifier |
| ObservableDictionaryState | A collection of StateVariables (internally implemented as a Dictionary) | IStateReader, IStateSetter, IStateCollectionObserver, IStateCollectionElementObserver, IStateCollectionElementSetter, IStateCollectionModifier |
Each State is bound to the appropriate context of the DI container, and each object obtains the necessary dependencies.
// ----- Installer var testState = new ObservableState<Test>(new Test()); testState.AddTo(this); Container.BindInstance<IStateReader<Test>>(testState); Container.BindInstance<IStateObserver<Test>>(testState); Container.BindInstance<IStateSetter<Test>>(testState);
[Inject] IStateObserver<Test> _testObserver; [Inject] IStateReader<Test> _testReader; [Inject] IStateSetter<Test> _testSetter; void Start() { // How to use variable _testObserver.Observe().Subscribe(test => {}).AddTo(this); Test test = _testReader.Read(); _testSetter.Set(new Test()); // Observer can also read test = _testObserver.Read(); // Setter can also read test = _testSetter.Read(); }
- Open the Package Manager
- Press [+βΌ] button and click Add package from git URL...
- Enter the following:
https://github.com/tanitaka-tech/StateVariable.git
- Install NugetForUnity.
- Search for
StateVariablein the NugetForUnity window. - Click the
Installbutton.
- Run the following:
dotnet add package StateVariable --version 1.4.0