【UE】c++でUNiagaraParameterCollectionの値を設定する

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));
    }
}