ue-actor-component-arc…
Use this skill when working with Actor and component design in Unreal Engine. Triggers on:…
Use this skill when working with Niagara particle systems, VFX, effects, emitter, Niagara component, or Niagara parameter in Unreal Engine C++. Covers spawning systems, setting parameters, data interfaces (SkeletalMesh, StaticMesh, Curve, Array), OnSystemFinished delegate, and
$ npx -y skills add quodsoler/unreal-engine-skills --skill ue-niagara-effects --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ue-niagara-effectsContext preview
The summary Claude sees to decide when to auto-load this skill.
Use this skill when working with Niagara particle systems, VFX, effects, emitter, Niagara component, or Niagara parameter in Unreal Engine C++. Covers spawning systems, setting parameters, data interfaces (SkeletalMesh, StaticMesh, Curve, Array), OnSystemFinished delegate, and
name: ue-niagara-effects description: "Use this skill when working with Niagara particle systems, VFX, effects, emitter, Niagara component, or Niagara parameter in Unreal Engine C++. Covers spawning systems, setting parameters, data interfaces (SkeletalMesh, StaticMesh, Curve, Array), OnSystemFinished delegate, and performance tuning. See references/niagara-parameter-types.md for type mapping and references/niagara-data-interfaces.md for data interface catalogue. For particle materials, see ue-materials-rendering." metadata: version: 1.0.0
You are an expert in controlling Unreal Engine's Niagara VFX system from C++.
Read `.agents/ue-project-context.md` before proceeding. Confirm:
typically suppressed on dedicated servers and may need LOD simplification on mobile.
Before writing Niagara C++ code, clarify:
1. **Effect lifecycle** — one-shot (fire and forget) or persistent / looping? 2. **Parameter needs** — which Niagara User Parameters must be set from gameplay (positions, colors, scalars)? 3. **Data interfaces required** — SkeletalMesh, StaticMesh, Curve, Array, or custom? 4. **Simulation target** — CPU or GPU sim? (affects which DI features are available) 5. **Performance budget** — pooling required? Mobile scalability tier? 6. **Completion handling** — does gameplay need a callback when the effect finishes?
---
UNiagaraSystem (asset: UNiagaraSystem)
└── UNiagaraEmitter[] (per-emitter asset, referenced via FNiagaraEmitterHandle)
└── UNiagaraScript[] (Spawn / Update / Event scripts; authored in Niagara editor)
└── Modules (stack of NiagaraScript nodes; not C++ classes)
Runtime instances:
UNiagaraComponent (scene component that drives one UNiagaraSystem instance)
└── FNiagaraSystemInstance (internal runtime state; access via GetSystemInstanceController())**Key rule**: authors expose parameters to C++ by setting their namespace to `User.` in the Niagara editor. Only `User.*` parameters can be overridden at runtime from C++.
---
#include "NiagaraFunctionLibrary.h"
#include "NiagaraComponent.h"
// Minimal one-shot spawn — component auto-destroys when the system completes.
UNiagaraComponent* NiagaraComp = UNiagaraFunctionLibrary::SpawnSystemAtLocation(
this, // WorldContextObject
ImpactVFXSystem, // UPROPERTY(EditAnywhere) UNiagaraSystem*
HitLocation, // FVector Location
FRotator::ZeroRotator, // FRotator Rotation
FVector(1.f), // FVector Scale
/*bAutoDestroy=*/ true,
/*bAutoActivate=*/ true,
/*PoolingMethod=*/ ENCPoolMethod::AutoRelease, // use pool when available
/*bPreCullCheck=*/ true
);
// Set parameters before the first tick if needed.
if (NiagaraComp)
{
NiagaraComp->SetVariableVec3(FName("User.HitNormal"), HitNormal);
NiagaraComp->SetVariableLinearColor(FName("User.HitColor"), DamageColor);
}// Attaches to a socket and stays active until manually deactivated.
UNiagaraComponent* TrailComp = UNiagaraFunctionLibrary::SpawnSystemAttached(
TrailVFXSystem,
WeaponMesh, // USceneComponent* AttachToComponent
FName("MuzzleSocket"), // FName AttachPointName
FVector::ZeroVector,
FRotator::ZeroRotator,
EAttachLocation::SnapToTarget,
/*bAutoDestroy=*/ false,
/*bAutoActivate=*/ true,
ENCPoolMethod::ManualRelease,
/*bPreCullCheck=*/ true
);// In header:
UPROPERTY(VisibleAnywhere)
TObjectPtr<UNiagaraComponent> EngineTrailVFX;
// In constructor:
EngineTrailVFX = CreateDefaultSubobject<UNiagaraComponent>(TEXT("EngineTrailVFX"));
EngineTrailVFX->SetupAttachment(GetRootComponent());
EngineTrailVFX->SetAutoActivate(false); // start inactive; activate via gameplay
// In gameplay code:
EngineTrailVFX->SetAsset(EngineTrailSystem); // swap asset without destroying component
EngineTrailVFX->Activate(/*bReset=*/ true);NiagaraComp->Activate(/*bReset=*/ false); // activate; resume if paused NiagaraComp->Activate(/*bReset=*/ true); // activate with full reset NiagaraComp->Deactivate(); // stop spawning, let particles drain NiagaraComp->DeactivateImmediate(); // kill all particles immediately NiagaraComp->ResetSystem(); // restart from time 0 NiagaraComp->ReinitializeSystem(); // full re-init + restart (expensive; prefer ResetSystem) NiagaraComp->SetPaused(true); // pause simulation NiagaraComp->SetAutoDestroy(true); // destroy component when system finishes
---
All setter variants accept the parameter name as `FName` prefixed with its namespace. User-exposed parameters use the `User.` prefix.
// Scalar types
NiagaraComp->SetVariableFloat(FName("User.DamageAmount"), 150.f);
NiagaraComp->SetVariableInt(FName("User.ProjectileCount"), 12);
NiagaraComp->SetVariableBool(FName("User.bIsCritical"), bIsCriticalHit);
// Vector types
NiagaraComp->SetVariableVec2(FName("User.UVOffset"), FVector2D(0.5, 0.25));
NiagaraComp->SetVariableVec3(FName("User.TargetPosition"), TargetLocation);
NiagaraComp->SetVariableVec4(FName("User.CustomData"), FVector4(1, 0.5, 0, 1));
NiagaraComp->SetVariableLinearColor(FName("UseA collection of 27 AI agent skills for Unreal Engine C++ development. Built for game developers who want AI coding agents to help write correct, production-quality UE5 C++ code.
Use this skill when working with Actor and component design in Unreal Engine. Triggers on:…
Use this skill when implementing AI, AIController, behavior tree, blackboard, AI perception,…
Use this skill when working with Unreal Engine animation: AnimInstance, montage playback,…
Use this skill when working with Unreal Engine async operations, threading, parallel…
Use this skill when working with audio, sound, music, UAudioComponent, PlaySoundAtLocation,…
Use this skill when working with character movement, CharacterMovementComponent, CMC,…