com.xavierarpa.uniflux
v2.1.1
Published
Provides Flux flow integration to Unity.
Downloads
2
Readme
UniFlux - Flexible Event Driven and Flux for Unity
In this example, we call CastTest via "StarterFlux.CastTest" key
using UniFlux; // 1
public sealed class StarterFlux : MonoFlux // 2
{
private void Start() => "StarterFlux.CastTest".Dispatch(); // 3
}
//...
public sealed class TestFlux : MonoFlux
{
[MethodFlux("StarterFlux.CastTest")] private void CastTest() => Debug.Log("Hello World"); // 4
}
Here we can use a local state and get's a reactive behaviour using "OnChange_Life", also we can call it using "Set_Life" or get the current state with "Get_Life"...
using UniFlux;
float _life;
public float Life
{
[MethodFlux("Get_Life")] get => _life;
[MethodFlux("Set_Life")] set
{
_life = value;
"OnChange_Life".Dispatch(value);
}
}
//...
[MethodFlux("OnChange_Life")] private void OnChange_Life(float value)
{
// ...
}
Here are examples of what you can do:
"1".Dispatch(); // - Send a Message
int _2 = "2".Dispatch<int>(); // - Send a Message and return a value
"3".Dispatch<int>(42); // - Send a Message with an argument
int _4 = "4".Dispatch<int,int>(42); // - Send a Message with an argument and return a value
Also we made easily handle IEnumerators, Task and UniTask
"9".IEnumerator();
"10".Task();
// #define UNIFLUX_UNITASK_SUPPORT
// To enable UniTask integration from https://github.com/Cysharp/UniTask"
"123".UniTask();
You can use the KEY type as an TaskAwaiter, calling Task cast implicit !
private static async Task Example()
{
await "KEY"; // Calls "KEY".Task();
}
Also can create anonimous subscriptions in case you don't want to do a method (not recommended)
"42".Store(()=>{}, true); // Anonimous Subscriptions
Compared methods of UniFlux | Name | Iterations | GC | Time | |-----------|--------------:|------:|-----:| | UniFlux (Dispatch int ) | 10.000 | 0B | 0ms | | UniFlux (Dispatch string ) | 10.000 | 0B | 1ms | | UniFlux (Store int ADD) | 10.000 | 1.2MB | ~3ms | | UniFlux (Store string ADD) | 10.000 | 1.2MB | ~3ms | | UniFlux (Store int REMOVE) | 10.000 | 1.2MB | ~30ms | | UniFlux (Store string REMOVE) | 10.000 | 1.2MB | ~30ms |
look how nice work Dispatching interger and string, Storing by design is planned to do it once so there's no problem in performance.
You can use the .unityPackage in releases
You can use the *.tzg in releases and add in PackageManager
You can add in PackageManager (How to install package from git URL)
https://github.com/xavierarpa/UniFlux.git
- You can install via openupm CLI
openupm add com.xavierarpa.uniflux
- You can install via npm
npm i com.xavierarpa.uniflux
For support, email [email protected]