Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/monry/UniFlow
Connect presentation events
https://github.com/monry/UniFlow
csharp unity
Last synced: about 3 hours ago
JSON representation
Connect presentation events
- Host: GitHub
- URL: https://github.com/monry/UniFlow
- Owner: monry
- License: mit
- Created: 2019-07-11T06:23:36.000Z (over 5 years ago)
- Default Branch: develop/v0.1.0
- Last Pushed: 2021-01-21T08:45:26.000Z (almost 4 years ago)
- Last Synced: 2024-08-03T05:18:47.046Z (3 months ago)
- Topics: csharp, unity
- Language: C#
- Size: 917 KB
- Stars: 65
- Watchers: 6
- Forks: 3
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# UniFlow
UniFlow is a library that can connect various Unity components without writing any C# script.
You can implement easily processes such as "Tutorial that accepts user interaction" and "Waiting for the end of playback of Animation, Audio, Timeline, etc.".
## Installation
```bash
upm add package dev.monry.uniflow
```Please refer to [this repository](https://github.com/upm-packages/upm-cli) about the `upm` command.
## Usages
### Basics
#### 1. Attach Connectors
Attach one or more Components what implements `ConnectorBase` listed below into GameObject.
#### 2. Connect Connectors
Set *Next `ConnectorBase`* into **Target Instances** field for each Connectors.
It is also possible to solve with `Zenject.ResolveIdAll()` by setting ID in **Target Ids** field
#### 3. Implement Receiver
Implement Component what inherits `ReceiverBase`.
Implement the process you want to execute when the event is received in the `OnReceive()` method that needs to override by `ReceiverBase`.
This method will be passed `EventMessages` what contains all propagated event informations.
### Inspector
#### Target Instances
Specify instances what inherits `ConnectableBase` into this field.
\* `ConnectorBase` and `ReceiverBase` are inherits `ConnectableBase`Fire messages at the correct time for each component.
#### Target Ids
Specify IDs what provides instances of `IConnectable` resolved by `Zenject.ResolveIdAll()` into this field.
Fire messages at the correct time for each component.
#### Act As Trigger
Set true to allow to act as the entry point of events.
#### Other parameters for each Connector
Individual parameters can be specified for each component.
### UniFlow Graph
![image](https://user-images.githubusercontent.com/838945/64085909-463dd780-cd70-11e9-9192-77972dbcebce.png)
UniFlow provides GraphView to view/edit connectables in scenes/prefabs
## Components what inherits `ConnectorBase`
### Messaging from traditional callback
#### `LifecycleEvent`
This component observes lifecycle events like as `Start`, `Update`, `FixedUpdate`, `OnEnable`, `Destroy`, ...
If you do not specify instance of `Component` will be used self instance.
Component supports below events to observe.
* Start
* Update
* FixedUpdate
* LateUpdate
* OnEnable
* OnDisable
* OnDestroy#### `UIBehaviourEventTrigger`
This component observes events like as `OnPointerXxx`, `OnDrag`, ...
If you do not specify instance of `UIBehaviour` will be obtained by `GetComponent()`
Component supports below events to observe.
* PointerEnter
* PointerExit
* PointerDown
* PointerUp
* PointerClick
* Drag
* Drop
* Scroll
* UpdateSelected
* Select
* Deselect
* Move
* InitializePotentialDrag
* BeginDrag
* EndDrag
* Submit
* Cancel#### `TransformEvent`
This component observes Transform events.
If you do not specify instance of `Component` will be obtained by `this.transform`.
Component supports below events to observe.
* BeforeTransformParentChanged
* TransformParentChanged
* TransformChildrenChanged#### `RectTransformEvent`
This component observes RectTransform events.
If you do not specify instance of `Component` will be obtained by `GetComponent()`
Component supports below events to observe.
* CanvasGroupChanged
* RectTransformDimensionsChange
* RectTransformRemoved#### `CameraEvent`
This component observes Camera events.
If you do not specify instance of `Component` will be used self instance.
Component supports below events to observe.
* BecomeVisible
* BecomeInvisible#### `ParticleEvent`
This component observes Particle events.
If you do not specify instance of `Component` will be used self instance.
Component supports below events to observe.
* ParticleCollision
* ParticleTrigger#### `MouseEvent`
This component observes Mouse events.
If you do not specify instance of `Component` will be used self instance.
Component supports below events to observe.
* MouseDown
* MouseUp
* MouseUpAsButton
* MouseEnter
* MouseExit
* MouseOver
* MouseDragNote: Do not notify on mobile platforms.
### Messaging from Physics
#### `PhysicsCollisionEvent`
This component observes PhysicsCollision events.
If you do not specify instance of `Component` will be used self instance.
Component supports below events to observe.
* CollisionEnter
* CollisionExit
* CollisionStay#### `PhysicsCollision2DEvent`
This component observes PhysicsCollision2D events.
If you do not specify instance of `Component` will be used self instance.
Component supports below events to observe.
* CollisionEnter2D
* CollisionExit2D
* CollisionStay2D#### `PhysicsTriggerEvent`
This component observes PhysicsTrigger events.
If you do not specify instance of `Component` will be used self instance.
Component supports below events to observe.
* TriggerEnter
* TriggerExit
* TriggerStay#### `PhysicsTrigger2DEvent`
This component observes PhysicsTrigger2D events.
If you do not specify instance of `Component` will be used self instance.
Component supports below events to observe.
* TriggerEnter2D
* TriggerExit2D
* TriggerStay2D### Messaging from time related components
#### `ActivationController`
This component will control activation of `GameObject` and `MonoBehaviour`.
Invoke `GameObject.SetActive(bool)` if `TargetGameObjects` field specified.
Change `MonoBehaviour.enabled` field if `TargetMonoBaheviours` field specified.
#### `DestroyInstance`
This component will destroy instances.
#### `SimpleAnimationController`
This component will control [SimpleAnimation](https://github.com/Unity-Technologies/SimpleAnimation) components.
#### `SimpleAnimationEvent`
This component will observe event that triggered from [SimpleAnimation](https://github.com/Unity-Technologies/SimpleAnimation) components.
#### `AnimatorTrigger`
This component will fire `Animator.SetTrigger()`.
If you do not specify instance of `Animator` will be obtained by `GetComponent()`
Note: Currently, parameter invocation such as `SetInt()` is not supported.
#### `AnimationEvent`
This component observes AnimationEvent firing.
To receive AnimationEvent, Component needs to be attached to the same GameObject as Animator.
#### `AudioController`
This component will fire `AudioSource.Xxx()`.
If you do not specify instance of `AudioSource` will be obtained by `GetComponent()`
Supported methods are listed below.
* Play
* Stop
* Pause
* UnPause#### `AudioEvent`
This component observes state changes of AudioSource.
If you do not specify instance of `AudioSource` will be obtained by `GetComponent()`
Supported events are listed below.
* Play
* Stop
* Pause
* UnPause
* Loop#### `PlayableController`
This component will fire `PlayableDirector.Play()`.
If you do not specify instance of `PlayableDirector` will be obtained by `GetComponent()`
#### `TimelineSignal`
This component observes Timeline Signals emission.
Specify `TimelineSignal.Dispatch()` in the destination method of the `UnityEngine.Timeline.SignalReceiver` component
#### `RaycasterController`
This component controls some Raycaster such as `PhysicsRaycaster`, `Physics2DRaycaster` and `GraphicRaycaster`.
#### `RaycastTargetController`
This component controls raycastTarget such as `Collider.enabled`, `Graphic.raycastTarget`.
#### `MoveParentTransform`
This component changes parent transform.
### Scene management
#### `LoadScene`
This component will load scene specified as string.
#### `LoadScene`
This component will load scene specified as enum.
#### `UnloadScene`
This component will unload scene specified as string.
#### `UnloadScene`
This component will unload scene specified as enum.
### Other utilities
#### `Timer`
This component observes time specified by inspector.
#### `Interval`
This component observes interval specified by inspector.
#### `Empty`
This component nothing to observing and firing.
## License
* [OtoLogic (https://otologic.jp)](https://otologic.jp) (CC BY 4.0)
* `Assets/Tests/Runtime/Sounds/TimeReport.mp3`