Cuándo pasar del Particle System al VFX Graph#
Ya conoces el Particle System, que simula partículas en la CPU y sirve para la mayoría de efectos. Cuando necesitas cantidades enormes (humo denso, tormentas, magia espectacular, millones de partículas) o efectos que reaccionan a texturas y a la escena, das el salto al VFX Graph, que simula en la GPU.
| Particle System (CPU) | VFX Graph (GPU) | |
|---|---|---|
| Cantidad | Miles | Millones |
| Se edita con | Módulos en el Inspector | Grafo de nodos |
| Requiere | Nada (siempre disponible) | URP/HDRP + paquete |
| Interacción con la escena | Limitada | Rica (colisiones por buffer de profundidad, etc.) |
| Curva | Suave | Más empinada |
| Ideal para | La mayoría de efectos | Efectos masivos/AAA |
El VFX Graph no funciona con el pipeline Built-in: necesita URP o HDRP (ver Introducción a URP) y su paquete, instalable desde el Package Manager. Crea uno con Assets → Create → Visual Effects → Visual Effect Graph.
Cómo está organizado el grafo#
Un VFX Graph se lee de arriba abajo, por contextos (bloques grandes):
| Contexto | Qué controla |
|---|---|
| Spawn | Cuántas partículas nacen y a qué ritmo (constante, ráfagas) |
| Initialize | Estado inicial de cada partícula (posición, velocidad, vida, color, tamaño) |
| Update | Qué les pasa cada frame (fuerzas, turbulencia, colisiones, envejecer) |
| Output | Cómo se dibujan (quad, mesh, con qué material/textura) |
Dentro de cada contexto añades bloques (Add Velocity, Set Color over Life, Collide with Depth Buffer...) y conectas propiedades que puedes exponer para editarlas por instancia o por código.
Controlarlo desde código#
Expones propiedades en el grafo (Blackboard) y las cambias con el componente VisualEffect:
using UnityEngine;
using UnityEngine.VFX;
public class ControlVFX : MonoBehaviour
{
[SerializeField] private VisualEffect efecto;
public void Explosion(float intensidad)
{
efecto.SetFloat("Intensidad", intensidad); // propiedad expuesta en el grafo
efecto.SendEvent("OnExplosion"); // dispara un evento del grafo
}
}SendEvent es la forma de "lanzar" ráfagas puntuales (un impacto, una explosión) desde el juego.
Qué lo hace tan potente#
Como cada partícula se calcula en la GPU (miles de núcleos en paralelo), el VFX Graph maneja cantidades imposibles para la CPU. Además puede leer texturas, mallas y hasta el buffer de profundidad de la escena para que las partículas colisionen con el mundo sin física de CPU. Por eso es la herramienta de humo, fuego, fluidos y magia de gama alta.
Cuándo NO usarlo#
- ¿Efecto normal de juego (chispas, impacto, polvo, un poco de humo)? → Particle System, más simple y va en cualquier plataforma
- ¿Millones de partículas, tormentas, fluidos, magia espectacular? → VFX Graph
- ¿Móvil de gama baja? → cuidado: el VFX Graph exige GPU; prueba en el dispositivo
- ¿Proyecto en Built-in? → no está disponible; usa Particle System
Errores frecuentes#
- Intentar usarlo en el pipeline Built-in (necesita URP/HDRP).
- Elegir VFX Graph para un efecto sencillo donde el Particle System sobra.
- No probar en el dispositivo objetivo (móvil): la carga de GPU puede ser alta.
- Olvidar exponer las propiedades que quieres controlar por código.
Ponte a prueba#
Resumen#
El VFX Graph simula efectos en la GPU con un grafo de nodos organizado en contextos (Spawn → Initialize → Update → Output), permitiendo millones de partículas y colisiones con la escena. Requiere URP/HDRP y su paquete. Contrólalo con VisualEffect.SetFloat/SendEvent. Úsalo para efectos masivos y espectaculares; para lo normal, el Particle System es más simple y multiplataforma. A menudo se combina con Shader Graph para el aspecto de cada partícula.