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/upm/LICENSE.md)
[](http://makeapullrequest.com)
[](https://twitter.com/intent/follow?screen_name=mob_sakai)
<< [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/upm/CHANGELOG.md) >>
### What's new? Please see [See changelog ](https://github.com/mob-sakai/ParticleEffectForUGUI/blob/upm/CHANGELOG.md)
### Do you want to receive notifications for new releases? [Watch this repo ](https://github.com/mob-sakai/ParticleEffectForUGUI/subscription)
### Support me on Patreon! [](https://www.patreon.com/join/2343451?)
## 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 to use Mask.|
|
|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.
Generate heavy GC every frame.|
|
|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.|
|
#### Features
* Sort particle effects with uGUI
* No Camera, RenderTexture or Canvas are required
* Masking with Mask or RectMask2D
* Easy to use
* Support Trail module
* Change alpha with CanvasGroup
* Scaling independent of Transform
* No heavy allocation every frame
* All ParticleSystem.ScalingModes and all Canvas.RenderModes are supported. They look almost the same in all modes.

* Scaled gizmo

## Demo
[WebGL Demo](http://mob-sakai.github.io/ParticleEffectForUGUI)
## Install
#### Using UnityPackageManager (for Unity 2018.3+)
Find the manifest.json file in the Packages folder of your project and edit it to look like this:
```js
{
"dependencies": {
"com.coffee.ui-particle": "https://github.com/mob-sakai/ParticleEffectForUGUI.git#2.1.0",
...
},
}
```
To update the package, change `#{version}` to the target version.
#### Using .unitypackage file (for Unity 2018.2+)
Download `*.unitypackage` from [Releases](https://github.com/mob-sakai/ParticleEffectForUGUI/releases) and import the package into your Unity project.
Select `Assets > Import Package > Custom Package` from the menu.

## How to play demo
* Import `UIParticle_Demo.unitypackage` into your project.
* The demo unitypackage exists in `Assets/Assets/Coffee/UIExtensions/UIParticle` or `Packages/UI Particle`.
* Open UIParticle_Demo scene and play it.
## Usage
1. Add your particle effect to canvas.
2. (Option) If you want to mask particles, set a UI shader such as "UI/UIAdditive" to material for ParticleSystem.

3. Add `UIParticle` component to root particle system of your effect from `Add Component` in inspector.

4. If your effect consists of multiple ParticleSystems, click "Fix".

5. Adjust the Scale property to change the size of the effect.

6. Enjoy!
##### Requirement
* Unity 2018.2+ (Tested in Unity 2018.2.0f2)
* No other SDK are required
## Development Note
## License
* MIT
* © UTJ/UCL
## Author
[mob-sakai](https://github.com/mob-sakai)
[](https://twitter.com/intent/follow?screen_name=mob_sakai)
[](https://www.patreon.com/join/2343451?)
## 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/upm/CHANGELOG.md