Sobre o projeto

Particle Effect For UGUI (também chamado UI Particle) é um pacote Unity de mob-sakai que permite que efeitos ParticleSystem sejam renderizados como parte da hierarquia Unity UI (uGUI). Foi criado para resolver o problema antigo de exibir efeitos de partículas dentro de máscaras de UI e ordená-los corretamente ao lado de outros elementos de UI. O pacote funciona usando as APIs `MeshBake` e `MeshTrailBake` do Unity (disponíveis desde Unity 2018.2) para converter dados de partículas em geometria de malha que o CanvasRenderer pode exibir diretamente. Isso elimina a necessidade das soluções alternativas tradicionais que exigiam Câmeras separadas, RenderTextures ou Canvases extras, que frequentemente causavam sobrecarga de desempenho e artefatos visuais. Recursos principais incluem: - **Suporte a máscaras**: Funciona com componentes `Mask` e `RectMask2D` quando usado com shaders compatíveis. - **Ordenável**: Partículas respeitam a ordem de índice entre irmãos ao lado de outros elementos de UI. - **Suporte ao módulo Trail**: Compatibilidade total com o módulo Trail do ParticleSystem. - **Alfa do CanvasGroup**: Integra-se com configurações de transparência do CanvasGroup. - **Sem alocações**: Projetado para evitar sobrecarga de coleta de lixo por quadro. - **Qualquer modo de renderização de canvas**: Compatível com modos Overlay, World Space e Camera Space. - **Suporte a pipelines de renderização**: Funciona com pipeline integrado, Universal Render Pipeline (URP) e High Definition Render Pipeline (HDRP). - **Compartilhamento de malha**: Múltiplos efeitos idênticos podem compartilhar resultados de simulação, reduzindo significativamente o custo de desempenho ao exibir muitas partículas semelhantes. - **Escala adaptativa**: Ajuste automático de escala quando a escala do Canvas muda devido à resolução da tela. - **Modos de posição de emissão**: Escolha entre posições de emissão absolutas (espaço mundial) ou relativas (escala local). - **UIParticleAttractor**: Um componente que puxa partículas em direção a uma posição alvo, com tipos de movimento e curvas configuráveis. - **ParticleSystemPreviewer**: Um componente somente de editor para visualizar efeitos de partículas na visualização da Cena. O pacote fornece três componentes principais: 1. **UIParticle** — O componente central. Anexe-o a um GameObject que tem ou terá um ParticleSystem. Ele gerencia a gravação e renderização de partículas no pipeline uGUI. Suporta animação de propriedades de material via AnimationClip, múltiplos materiais e multiplicadores de escala de tempo. 2. **UIParticleAttractor** — Um componente opcional que atrai partículas de um ParticleSystem especificado em direção a um ponto de destino, com velocidade configurável, tipo de movimento (linear, suave ou esférico) e eventos de conclusão. 3. **ParticleSystemPreviewer** — Ajudante somente de editor que gera um ParticleSystem temporário para visualização quando o GameObject está selecionado na visualização da Cena. Não incluído em builds. A instalação é suportada via OpenUPM (`openupm add com.coffee.ui-particle`), UPM a partir de URL git, ou como pacote incorporado. O pacote requer Unity 2018.3 ou posterior. Limitações de shader: O pacote não suporta a maioria dos shaders integrados, exceto `UI/Default`. Shaders personalizados devem incluir suporte a stencil para máscaras, e no Unity 2018–2019, os componentes zw de UV são descartados, o que pode afetar alguns shaders. A abordagem recomendada é usar os shaders integrados `UI/Additive` ou `UI/Default`, ou criar um shader personalizado seguindo o modelo baseado em stencil fornecido na documentação. Para desempenho, exibir muitas cópias do mesmo efeito se beneficia muito do recurso Mesh Sharing, que deduplica a simulação e reduz draw calls. Sem compartilhamento de malha, o UIParticle usa menos objetos do que ParticleSystems brutos no espaço UI, mas ainda é mais caro do que um ParticleSystem padrão usado fora da UI.