Sobre el proyecto
Particle Effect For UGUI (también llamado UI Particle) es un paquete de Unity creado por mob-sakai que permite que los efectos de ParticleSystem se rendericen como parte de la jerarquía de Unity UI (uGUI). Fue creado para resolver el problema de larga data de mostrar efectos de partículas dentro de máscaras de UI y ordenarlos correctamente junto con otros elementos de UI.
El paquete funciona usando las APIs `MeshBake` y `MeshTrailBake` de Unity (disponibles desde Unity 2018.2) para convertir datos de partículas en geometría de malla que CanvasRenderer puede mostrar directamente. Esto elimina la necesidad de las soluciones tradicionales que requerían cámaras separadas, RenderTextures o Canvases adicionales, que a menudo causaban sobrecarga de rendimiento y artefactos visuales.
Las características clave incluyen:
- **Soporte de máscaras**: Funciona con los componentes `Mask` y `RectMask2D` cuando se usan shaders compatibles.
- **Ordenable**: Las partículas respetan el orden de índice de hermanos junto con otros elementos de UI.
- **Soporte de módulo de estela**: Compatibilidad total con el módulo Trail de ParticleSystem.
- **Alfa de CanvasGroup**: Se integra con la configuración de transparencia de CanvasGroup.
- **Sin asignaciones**: Diseñado para evitar la sobrecarga de recolección de basura por fotograma.
- **Cualquier modo de render de canvas**: Compatible con los modos Overlay, World Space y Camera Space.
- **Soporte de pipeline de render**: Funciona con el pipeline integrado, Universal Render Pipeline (URP) y High Definition Render Pipeline (HDRP).
- **Compartición de mallas**: Múltiples efectos idénticos pueden compartir resultados de simulación, reduciendo significativamente el costo de rendimiento al mostrar muchas partículas similares.
- **Escalado adaptativo**: Ajuste automático de escala cuando la escala del Canvas cambia debido a la resolución de pantalla.
- **Modos de posición de emisión**: Elige entre posiciones de emisión absolutas (espacio mundial) o relativas (escala local).
- **UIParticleAttractor**: Un componente que atrae partículas hacia una posición objetivo, con tipos de movimiento y curvas configurables.
- **ParticleSystemPreviewer**: Un componente solo de editor para previsualizar efectos de partículas en la vista de Escena.
El paquete proporciona tres componentes principales:
1. **UIParticle** — El componente central. Adjúntalo a un GameObject que tenga o contendrá un ParticleSystem. Gestiona el horneado y renderizado de partículas en el pipeline de uGUI. Soporta animación de propiedades de material mediante AnimationClip, múltiples materiales y multiplicadores de escala de tiempo.
2. **UIParticleAttractor** — Un componente opcional que atrae partículas de un ParticleSystem especificado hacia un punto de destino, con velocidad configurable, tipo de movimiento (lineal, suave o esférico) y eventos de finalización.
3. **ParticleSystemPreviewer** — Ayudante solo de editor que genera un ParticleSystem temporal para previsualización cuando el GameObject está seleccionado en la vista de Escena. No se incluye en las compilaciones.
La instalación se admite a través de OpenUPM (`openupm add com.coffee.ui-particle`), UPM desde URL de git, o como paquete integrado. El paquete requiere Unity 2018.3 o posterior.
Limitaciones de shaders: El paquete no soporta la mayoría de los shaders integrados excepto `UI/Default`. Los shaders personalizados deben incluir soporte de stencil para enmascarado, y en Unity 2018–2019, los componentes zw de UV se descartan, lo que puede afectar algunos shaders. El enfoque recomendado es usar los shaders integrados `UI/Additive` o `UI/Default`, o crear un shader personalizado siguiendo la plantilla basada en stencil proporcionada en la documentación.
Para rendimiento, mostrar muchas copias del mismo efecto se beneficia enormemente de la función Mesh Sharing, que deduplica la simulación y reduce las llamadas de dibujo. Sin compartir mallas, UIParticle usa menos objetos que los ParticleSystems crudos en espacio de UI, pero sigue siendo más costoso que un ParticleSystem estándar usado fuera de la UI.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.