{"repo":"mob-sakai/ParticleEffectForUGUI","free":true,"listed":false,"github":"https://github.com/mob-sakai/ParticleEffectForUGUI","clone":"git clone https://github.com/mob-sakai/ParticleEffectForUGUI.git","description":"Render particle effect in UnityUI(uGUI). Maskable, sortable, and no extra Camera/RenderTexture/Canvas.","language":"C#","stars":5940,"topics":["component","effects","particle","particle-system","ugui","ui","unity","unity3d"],"license":"MIT","category":"game_ui_asset","readme_excerpt":"# <img alt=\"UIParticleIcon\" src=\"https://github.com/mob-sakai/ParticleEffectForUGUI/assets/12690315/d76e105e-a840-4f61-a1f6-8cf311c0812d\" width=\"26\"/> Particle Effect For UGUI (UI Particle) <!-- omit in toc -->\n\n[![](https://img.shields.io/npm/v/com.coffee.ui-particle?label=openupm&registry_uri=https://package.openupm.com)](https://openupm.com/packages/com.coffee.ui-particle/)\n[![](https://img.shields.io/github/v/release/mob-sakai/ParticleEffectForUGUI)](https://github.com/mob-sakai/ParticleEffectForUGUI/releases)\n[![](https://img.shields.io/github/license/mob-sakai/ParticleEffectForUGUI.svg)](https://github.com/mob-sakai/ParticleEffectForUGUI/blob/main/LICENSE.md)  \n![](https://img.shields.io/badge/Unity-2018.2+-57b9d3.svg?style=flat&logo=unity)\n![](https://img.shields.io/badge/uGUI_2.0_Ready-57b9d3.svg?style=flat)\n![](https://img.shields.io/badge/UPR%2FHDPR_Ready-57b9d3.svg?style=flat)  \n![](https://github.com/mob-sakai/ParticleEffectForUGUI/actions/workflows/test.yml/badge.svg?branch=develop)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-orange.svg)](http://makeapullrequest.com)\n[![](https://img.shields.io/github/watchers/mob-sakai/ParticleEffectForUGUI.svg?style=social&label=Watch)](https://github.com/mob-sakai/ParticleEffectForUGUI/subscription)\n[![](https://img.shields.io/twitter/follow/mob_sakai.svg?label=Follow&style=social)](https://twitter.com/intent/follow?screen_name=mob_sakai)\n\n<< [📝 Description](#-description-) | [📌 Key Features](#-key-features) | [🎮 Demo](#-demo) | [⚙ Installation](#-installation) | [🚀 Usage](#-usage) | [🛠 Development Note](#-development-note) | [🤝 Contributing](#-contributing) >>\n\n## 📝 Description <!-- omit in toc -->\n\n![](https://user-images.githubusercontent.com/12690315/41771577-8da4b968-7650-11e8-9524-cd162c422d9d.gif)\n\nThis package uses the new APIs `MeshBake/MeshTrailBake` (introduced in Unity 2018.2) to render particles through `CanvasRenderer`.  \nYou can render, mask, and sort your `ParticleSystems` for UI without the need for an additional `Camera`, `RenderTexture`, or `Canvas`.\n\n- [📌 Key Features](#-key-features)\n- [🎮 Demo](#-demo)\n- [⚙ Installation](#-installation)\n    - [Install via OpenUPM](#install-via-openupm)\n    - [Install via UPM (with Package Manager UI)](#install-via-upm-with-package-manager-ui)\n    - [Install via UPM (Manually)](#install-via-upm-manually)\n    - [Install as Embedded Package](#install-as-embedded-package)\n- [🚀 Usage](#-usage)\n  - [Component: UIParticle](#component-uiparticle)\n  - [Basic Usage](#basic-usage)\n  - [Usage with Your Existing ParticleSystem Prefab](#usage-with-your-existing-particlesystem-prefab)\n  - [Usage with `Mask` or `RectMask2D` Component](#usage-with-mask-or-rectmask2d-component)\n  - [Usage with Script](#usage-with-script)\n  - [Component: UIParticleAttractor](#component-uiparticleattractor)\n  - [Component: ParticleSystemPreviewer](#component-particlesystempreviewer)\n  - [Project Settings](#project-settings)\n- [🛠 Development Note](#-development-note)\n  - [Compares the Baking mesh approach with the conventional approach](#compares-the-baking-mesh-approach-with-the-conventional-approach)\n    - [Performance test results](#performance-test-results)\n  - [🔍 FAQ: Why Are My UIParticles Not Displayed Correctly?](#-faq-why-are-my-uiparticles-not-displayed-correctly)\n  - [Shader Limitation](#shader-limitation)\n    - [Built-in shaders are not supported](#built-in-shaders-are-not-supported)\n    - [(Unity 2018 or 2019) UV.zw components will be discarded](#unity-2018-or-2019-uvzw-components-will-be-discarded)\n    - [(Unity 2018 or 2019) Custom vertex streams](#unity-2018-or-2019-custom-vertex-streams)\n  - [Overheads](#overheads)\n  - [How to Make a Custom Shader to Support `Mask` and `RectMask2D` Component](#how-to-make-a-custom-shader-to-support-mask-and-rectmask2d-component)\n- [🤝 Contributing](#-contributing)\n  - [Issues](#issues)\n  - [Pull Requests](#pull-requests)\n  - [Support](#support)\n- [License](#license)\n- [Author](#author)\n- [See Also](#see-also)\n\n<br><br>\n\n## 📌 Key Features\n\n* **Easy to use:** The package is ready to use out of the box.\n* **Sortable:** Sort particle effects and other UI elements by sibling index.\n* **Maskable:** Supports `Mask` or `RectMask2D`.\n* **No extra components required:** No need for an additional `Camera`, `RenderTexture`, or `Canvas`.\n* **Trail module support:** Fully supports the Trail module.\n* **CanvasGroup alpha support:** Integrates with `CanvasGroup` alpha.\n* **No allocations:** Efficiently renders particles without allocations.\n* **Any canvas render mode support:** Works with overlay, camera space, and world space.\n* **Any Render pipeline support:** Compatible with Universal Render Pipeline (URP) and High Definition Render Pipeline (HDRP).\n* **Disabling domain reload support:** Supports disabling `Enter Play Mode Options > Reload Domain`.\n* **Animatable material properties:** Supports changing material properties with AnimationClip (AnimatableProperty).  \n  ![AnimatableProperty.gif](https://user-images.githubusercontent.com/12690315/53286323-2d94a980-37b0-11e9-8afb-c4a207805ff2.gif)\n* **Multiple materials:** Supports 8+ materials.\n* **Correct positioning:** Adjusts world space particle positions correctly when changing window size for standalone platforms (Windows, MacOSX, and Linux).\n* **Adaptive scaling:** Provides adaptive scaling for UI (AutoScalingMode).\n* **Performance optimization:** Mesh sharing group to improve performance.  \n  <img alt=\"MeshSharing.gif\" src=\"https://user-images.githubusercontent.com/12690315/174311048-c882df81-6c34-4eba-b0aa-5645457692f1.gif\" width=\"450\"/>\n* **Particle attractor:** Includes a particle attractor component.  \n  <img alt=\"ParticleAttractor.gif\" src=\"https://user-images.githubusercontent.com/12690315/174311027-462929a4-13f0-4ec4-86ea-9c832f2eecf1.gif\" width=\"450\"/>\n* **Emission position mode:** Supports relative/absolute particle emission position modes.  \n  <img alt=\"AbsolutePosition.gif\" src=\"https://user-images.githubusercontent.com/12690315/175751579-5a2357e8-2ecf-4afd-83c8-66e9771bde39.gif\" width=\"450\"/>\n* **Custom view size:** Fixes min/max particle size mismatch.  \n  ![CustomViewSize.gif](https://github.com/mob-sakai/ParticleEffectForUGUI/assets/12690315/dd929959-1a37-420b-b13d-e849022b9c9d)\n\n<br><br>\n\n## 🎮 Demo\n\n* [WebGL Demo](https://mob-sakai.github.io/demos/UIParticle_Demo/index.html)\n\n> ![](https://user-images.githubusercontent.com/12690315/174311768-1843a5f2-f776-491b-aaa8-2a131a8b6a16.gif)\n\n* [WebGL Demo (Cartoon FX & War FX)](https://mob-sakai.github.io/Demos/ParticleEffectForUGUI_CFX)\n    * [Cartoon FX Free][CFX] & [War FX][WFX] (by [Jean Moreno (JMO)][JMO]) with UIParticle\n\n> ![](https://user-images.githubusercontent.com/12690315/91664766-3e07ac00-eb2c-11ea-978b-ef723be80619.gif)\n\n[CFX]: https://assetstore.unity.com/packages/vfx/particles/cartoon-fx-free-109565\n\n[WFX]: https://assetstore.unity.com/packages/vfx/particles/war-fx-5669\n\n[JMO]: https://assetstore.unity.com/publishers/1669\n\n<br><br>\n\n## ⚙ Installation\n\n_This package requires **Unity 2018.3 or later**._\n\n#### Install via OpenUPM\n\n- This package is available on [OpenUPM](https://openupm.com) package registry.\n- This is the preferred method of installation, as you can easily receive updates as they're released.\n- If you have [openupm-cli](https://github.com/openupm/openupm-cli) installed, then run the following command in your project's directory:\n  ```\n  openupm add com.coffee.ui-particle\n  ```\n- To update the package, use Package Manager UI (`Window > Package Manager`) or run the following command with `@{version}`:\n  ```\n  openupm add com.coffee.ui-particle@4.13.0\n  ```\n\n#### Install via UPM (with Package Manager UI)\n\n- Click `Window > Package Manager` to open Package Manager UI.\n- Click `+ > Add package from git URL...` and input the repository URL: `https://github.com/mob-sakai/ParticleEffectForUGUI.git`  \n  ![](https://github.com/user-attachments/assets/f88f47ad-c606-44bd-9e86-ee3f72eac548)\n- To update the package, change suffix `#{version}` to the target version.\n  - e.g. `https://github.com/mob-sakai/ParticleEffectForUGUI.git#4.13.0`\n\n#### Install via UPM (Manually)\n\n- Open the `Packages/manifest.json` file in your project. Then add this package somewhere in the `dependencies` block:\n  ```json\n  {\n    \"dependencies\": {\n      \"com.coffee.ui-particle\": \"https://github.com/mob-sakai/ParticleEffectForUGUI.git\",\n      ...\n    }\n  }\n  ```\n\n- To update the package, change suffix `#{version}` to the target version.\n  - e.g. `\"com.coffee.ui-particle\": \"https://github.com/mob-sakai/ParticleEffectForUGUI.git#4.13.0\",`\n\n#### Install as Embedded Package\n\n1. Download a source code zip file from [Releases](https://github.com/mob-sakai/ParticleEffectForUGUI/releases) and extract it.\n2. Place it in your project's `Packages` directory.  \n   ![](https://github.com/mob-sakai/mob-sakai/assets/12690315/0b7484b4-5fca-43b0-a9ef-e5dbd99bcdb4)\n- If you want to fix bugs or add features, install it as an embedded package.\n- To update the package, you need to re-download it and replace the contents.\n\n<br><br>\n\n## 🚀 Usage\n\n### Component: UIParticle\n\n`UIParticle` controls the ParticleSystems that are attached to its own game objects and child game objects.\n\n![](https://github.com/user-attachments/assets/bc9eb783-afce-4102-ac61-aee9ea8d6f2f)\n\n- **Maskable**: Does this graphic allow maskable.\n- **Scale**: Scale the rendering particles. When the `3D` toggle is enabled, 3D scale (x, y, z) is supported.\n- **Animatable Properties**: If you want to update material properties (e.g., `_MainTex_ST`, `_Color`) in AnimationClip,\n  use this to mark as animatable.\n\n> [!TIPS]\n> (Unity 2021.1 or later) **Custom Animatable Properties**  \n> From the `Add Custom...` menu in `Animatable Properties`, you can add fields located outside the `Properties` block in the shader as `Animatable Properties`.  \n> This allows `Matrix`, `Matrix Array`, `Float Array`, and `Vector Array` values modified by the `ParticleSystemRen","default_branch":"main","files":157,"tree":[".coffee.internal.sed",".github/FUNDING.yml",".github/ISSUE_TEMPLATE/bug_report.md",".github/ISSUE_TEMPLATE/feature_request.md",".github/ISSUE_TEMPLATE/question.md",".github/pull_request_template.md",".releaserc.json","CHANGELOG.md","CHANGELOG.md.meta","CODE_OF_CONDUCT.md","CODE_OF_CONDUCT.md.meta","CONTRIBUTING.md","CONTRIBUTING.md.meta","Editor.meta","Editor/AnimatablePropertyEditor.cs","Editor/AnimatablePropertyEditor.cs.meta","Editor/Coffee.UIParticle.Editor.asmdef","Editor/Coffee.UIParticle.Editor.asmdef.meta","Editor/UIParticleEditor.cs","Editor/UIParticleEditor.cs.meta","Editor/UIParticleIcon.png","Editor/UIParticleIcon.png.meta","Editor/UIParticleMenu.cs","Editor/UIParticleMenu.cs.meta","LICENSE.md","LICENSE.md.meta","README.md","README.md.meta","Runtime.meta","Runtime/AnimatableProperty.cs","Runtime/AnimatableProperty.cs.meta","Runtime/Coffee.UIParticle.R.dll","Runtime/Coffee.UIParticle.R.dll.meta","Runtime/Coffee.UIParticle.asmdef","Runtime/Coffee.UIParticle.asmdef.meta","Runtime/Internal.meta","Runtime/Internal/Extensions.meta","Runtime/Internal/Extensions/CanvasExtensions.cs","Runtime/Internal/Extensions/CanvasExtensions.cs.meta","Runtime/Internal/Extensions/Color32Extensions.cs","Runtime/Internal/Extensions/Color32Extensions.cs.meta","Runtime/Internal/Extensions/ComponentExtensions.cs","Runtime/Internal/Extensions/ComponentExtensions.cs.meta","Runtime/Internal/Extensions/MeshExtensions.cs","Runtime/Internal/Extensions/MeshExtensions.cs.meta","Runtime/Internal/Extensions/SpriteExtensions.cs","Runtime/Internal/Extensions/SpriteExtensions.cs.meta","Runtime/Internal/Extensions/Vector3Extensions.cs","Runtime/Internal/Extensions/Vector3Extensions.cs.meta","Runtime/Internal/ProjectSettings.meta","Runtime/Internal/ProjectSettings/PreloadedProjectSettings.cs","Runtime/Internal/ProjectSettings/PreloadedProjectSettings.cs.meta","Runtime/Internal/Utilities.meta","Runtime/Internal/Utilities/FastAction.cs","Runtime/Internal/Utilities/FastAction.cs.meta","Runtime/Internal/Utilities/FrameCache.cs","Runtime/Internal/Utilities/FrameCache.cs.meta","Runtime/Internal/Utilities/Logger.cs","Runtime/Internal/Utilities/Logger.cs.meta","Runtime/Internal/Utilities/MaterialRepository.cs","Runtime/Internal/Utilities/MaterialRepository.cs.meta","Runtime/Internal/Utilities/Misc.cs","Runtime/Internal/Utilities/Misc.cs.meta","Runtime/Internal/Utilities/ObjectPool.cs","Runtime/Internal/Utilities/ObjectPool.cs.meta","Runtime/Internal/Utilities/ObjectRepository.cs","Runtime/Internal/Utilities/ObjectRepository.cs.meta","Runtime/Internal/Utilities/TypeCache.cs","Runtime/Internal/Utilities/TypeCache.cs.meta","Runtime/Internal/Utilities/UIExtraCallbacks.cs","Runtime/Internal/Utilities/UIExtraCallbacks.cs.meta","Runtime/ParticleSystemPreviewer.cs","Runtime/ParticleSystemPreviewer.cs.meta","Runtime/UIParticle.cs","Runtime/UIParticle.cs.meta","Runtime/UIParticleAttractor.cs","Runtime/UIParticleAttractor.cs.meta","Runtime/UIParticleProjectSettings.cs","Runtime/UIParticleProjectSettings.cs.meta","Runtime/UIParticleRenderer.cs","Runtime/UIParticleRenderer.cs.meta","Runtime/UIParticleUpdater.cs","Runtime/UIParticleUpdater.cs.meta","Runtime/Utilities.meta","Runtime/Utilities/ParticleSystemExtensions.cs","Runtime/Utilities/ParticleSystemExtensions.cs.meta","Samples~/Demo.meta","Samples~/Demo/Animations.meta","Samples~/Demo/Animations/ColorArrayInjection.cs","Samples~/Demo/Animations/ColorArrayInjection.cs.meta","Samples~/Demo/Animations/UIParticle_Demo_Animatable.controller","Samples~/Demo/Animations/UIParticle_Demo_Animatable.controller.meta","Samples~/Demo/Animations/UIParticle_Demo_Pop.controller","Samples~/Demo/Animations/UIParticle_Demo_Pop.controller.meta","Samples~/Demo/Animations/UIParticle_Demo_Wave.controller","Samples~/Demo/Animations/UIParticle_Demo_Wave.controller.meta","Samples~/Demo/Materials.meta","Samples~/Demo/Materials/UIAdditive+Color.shader","Samples~/Demo/Materials/UIAdditive+Color.shader.meta","Samples~/Demo/Materials/UIParticle_Demo_Animatable+Color.mat","Samples~/Demo/Materials/UIParticle_Demo_Animatable+Color.mat.meta","Samples~/Demo/Materials/UIParticle_Demo_Animatable.mat","Samples~/Demo/Materials/UIParticle_Demo_Animatable.mat.meta","Samples~/Demo/Materials/UIParticle_Demo_Animatable.png","Samples~/Demo/Materials/UIParticle_Demo_Animatable.png.meta","Samples~/Demo/Materials/UIParticle_Demo_Dot.mat","Samples~/Demo/Materials/UIParticle_Demo_Dot.mat.meta","Samples~/Demo/Materials/UIParticle_Demo_Fire.mat","Samples~/Demo/Materials/UIParticle_Demo_Fire.mat.meta","Samples~/Demo/Materials/UIParticle_Demo_Fire_Atlas.png","Samples~/Demo/Materials/UIParticle_Demo_Fire_Atlas.png.meta","Samples~/Demo/Materials/UIParticle_Demo_Flame.mat","Samples~/Demo/Materials/UIParticle_Demo_Flame.mat.meta","Samples~/Demo/Materials/UIParticle_Demo_Flame_Atlas.tif","Samples~/Demo/Materials/UIParticle_Demo_Flame_Atlas.tif.meta","Samples~/Demo/Materials/UIParticle_Demo_UIAdditive.mat","Samples~/Demo/Materials/UIParticle_Demo_UIAdditive.mat.meta","Samples~/Demo/Prefabs.meta","Samples~/Demo/Prefabs/UIParticle_Demo_Animatable.fbx","Samples~/Demo/Prefabs/UIParticle_Demo_Animatable.fbx.meta","Samples~/Demo/Prefabs/UIParticle_Demo_Animatable.prefab","Samples~/Demo/Prefabs/UIParticle_Demo_Animatable.prefab.meta","Samples~/Demo/Prefabs/UIParticle_Demo_EffectSample_Frame.prefab","Samples~/Demo/Prefabs/UIParticle_Demo_EffectSample_Frame.prefab.meta","Samples~/Demo/Prefabs/UIParticle_Demo_EffectSample_Unity-chan.prefab","Samples~/Demo/Prefabs/UIParticle_Demo_EffectSample_Unity-chan.prefab.meta","Samples~/Demo/Scripts.meta","Samples~/Demo/Scripts/Coffee.UIParticle.Demo.asmdef","Samples~/Demo/Scripts/Coffee.UIParticle.Demo.asmdef.meta","Samples~/Demo/Scripts/CopyItemOnStart.cs","Samples~/Demo/Scripts/CopyItemOnStart.cs.meta","Samples~/Demo/Scripts/UIElementDragger.cs","Samples~/Demo/Scripts/UIElementDragger.cs.meta","Samples~/Demo/Scripts/UIParticle_Demo.cs","Samples~/Demo/Scripts/UIParticle_Demo.cs.meta","Samples~/Demo/Scripts/UIParticle_Demo_UIParticleController.cs","Samples~/Demo/Scripts/UIParticle_Demo_UIParticleController.cs.meta","Samples~/Demo/Sprites.meta","Samples~/Demo/Sprites/UIParticle_Demo.spriteatlas","Samples~/Demo/Sprites/UIParticle_Demo.spriteatlas.meta","Samples~/Demo/Sprites/UIParticle_Demo_Light_Frame.png","Samples~/Demo/Sprites/UIParticle_Demo_Light_Frame.png.meta","Samples~/Demo/Sprites/UIParticle_Demo_Move.png","Samples~/Demo/Sprites/UIParticle_Demo_Move.png.meta","Samples~/Demo/Sprites/UIParticle_Demo_Star.png","Samples~/Demo/Sprites/UIParticle_Demo_Star.png.meta","Samples~/Demo/Sprites/UIParticle_Demo_Unity-chan.png","Samples~/Demo/Sprites/UIParticle_Demo_Unity-chan.png.meta","Samples~/Demo/UIParticle_Demo.unity","Samples~/Demo/UIParticle_Demo.unity.meta","Shaders.meta","Shaders/UIAdditive.mat","Shaders/UIAdditive.mat.meta","Shaders/UIAdditive.shader","Shaders/UIAdditive.shader.meta","package.json","package.json.meta"],"storefront":"/r/mob-sakai","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/mob-sakai/ParticleEffectForUGUI/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}