ParticleEffectForUGUI
===
This plugin provide a component to render particle effect for uGUI in Unity 2018.2+.
The particle rendering is maskable and sortable, without Camera, RenderTexture or Canvas.
[](https://github.com/mob-sakai/ParticleEffectForUGUI/releases)
[](https://github.com/mob-sakai/ParticleEffectForUGUI/releases)

[](https://github.com/mob-sakai/ParticleEffectForUGUI/blob/master/LICENSE.txt)
[](https://github.com/mob-sakai/ParticleEffectForUGUI/commits/develop)
[](https://github.com/mob-sakai/ParticleEffectForUGUI/issues)
<< [Description](#Description) | [WebGL Demo](#demo) | [Download](https://github.com/mob-sakai/ParticleEffectForUGUI/releases) | [Usage](#usage) | [Development Note](#development-note) | [Change log](https://github.com/mob-sakai/ParticleEffectForUGUI/blob/master/CHANGELOG.md) >>
### What's new? Please see [RELEASE NOTE ](https://github.com/mob-sakai/ParticleEffectForUGUI/blob/master/CHANGELOG.md)
## Description

This plugin uses new APIs `MeshBake/MashTrailBake` (added with Unity 2018.2) to render particles by CanvasRenderer.
You can mask and sort particles for uGUI without Camera, RenderTexture, Canvas.
Compares this "Baking mesh" approach with the conventional approach:
(This scene is included in the package.)
|Approach|Good|Bad|Screenshot|
|-|-|-|-|
|Baking mesh
**\(UIParticle\)**|Rendered as is.
Maskable.
Sortable.
Less objects.|**Requires Unity 2018.2+.**
Requires UI shaders.|
|
|Do nothing|Rendered as is.|**Looks like a glitch.**
Not maskable.
Not sortable.|
|
|Convert particle to UIVertex
[\(UIParticleSystem\)](https://forum.unity.com/threads/free-script-particle-systems-in-ui-screen-space-overlay.406862/)|Maskable.
Sortable.
Less objects.|**Adjustment is difficult.**
Requires UI shaders.
Difficult to adjust scale.
Force hierarchy scalling.
Simulation results are incorrect.
Trail, rotation of transform, time scaling are not supported.|
|
|Use Canvas to sort|Rendered as is.
Sortable.|**You must to manage sorting orders.**
Not maskable.
More batches.|
|
|Use RenderTexture|Maskable.
Sortable.|**Requires Camera and RenderTexture.**
Difficult to adjust position and size.
Quality depends on the RenderTexture's setting.|
|
## Demo
[WebGL Demo](http://mob-sakai.github.io/ParticleEffectForUGUI)
## Usage
1. Download ParticleEffectForUGUI.unitypackage from [Releases](https://github.com/mob-sakai/ParticleEffectForUGUI/releases).
1. Import the package into your Unity project. Select `Import Package > Custom Package` from the `Assets` menu.
1. Add particle system to canvas.
1. If you want to mask particles, set the "UI/UIAdditive" shader to material.
1. Add `UIParticle` component to particle system from `Add Component` in inspector.

1. Enjoy!
##### Requirement
* Unity 2018.2+ (Tested in Unity 2018.2b9)
* No other SDK are required
## Development Note
#### BakeMesh API has a issue!
See [this issue](https://issuetracker.unity3d.com/issues/bakemesh-slash-baketrailsmesh-crashes-if-update-jobs-are-running).
`UIParticle` avoids the issue, but the rendering result lags one frame.
Please vote the issue to improve `UIParticle`!
## License
* MIT
* © UTJ/UCL
## Author
[mob-sakai](https://github.com/mob-sakai)
## See Also
* GitHub page : https://github.com/mob-sakai/ParticleEffectForUGUI
* Releases : https://github.com/mob-sakai/ParticleEffectForUGUI/releases
* Issue tracker : https://github.com/mob-sakai/ParticleEffectForUGUI/issues
* Current project : https://github.com/mob-sakai/ParticleEffectForUGUI/projects/1
* Change log : https://github.com/mob-sakai/ParticleEffectForUGUI/blob/master/CHANGELOG.md