ParameterCollectionInstance->SetVectorParameterなどで値を設定することが出来ます
#pragma once #include "CoreMinimal.h" #include "NiagaraComponent.h" #include "NiagaraParameterCollection.h" #include "EffectControlActor.generated.h" UCLASS(Blueprintable) class AEffectControlActor : public AActor { GENERATED_BODY() public: AEffectControlActor(); protected: virtual void Tick(float DeltaTime) override final; virtual void BeginPlay() override final; private: UPROPERTY(EditAnywhere, Category = "Effect", meta = (DisplayName = "エフェクトパラメータ")) TSoftObjectPtr<UNiagaraParameterCollection> mpParameterCollection = nullptr; UPROPERTY(EditAnywhere) TObjectPtr<UNiagaraParameterCollectionInstance> mpParameterCollectionInstance = nullptr; };
#include "EffectControlActor.h" #include "NiagaraFunctionLibrary.h" #include "NiagaraWorldManager.h" AEffectControlActor::AEffectControlActor() : ::ALFActor() { PrimaryActorTick.bCanEverTick = true; } void AEffectControlActor::BeginPlay() { Super::BeginPlayApp(); if (!mpParameterCollection.IsValid()) { return; } if (UWorld* World = GetWorld()) { TObjectPtr<UNiagaraParameterCollection> ParameterCollection = mpParameterCollection.LoadSynchronous(); if (IsValid(ParameterCollection)) { //ParameterCollectionInstanceを取得 mpParameterCollectionInstance = UNiagaraFunctionLibrary::GetNiagaraParameterCollection(World, ParameterCollection); } else { ensure(false); } } } void AEffectControlActor::Tick(float DeltaTime) { if (IsValid(mpParameterCollectionInstance)) { //値を設定 mpParameterCollectionInstance->SetVectorParameter("Test", FVector(0)); } }