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


【UE】c++のTMapでDELEGATEを使用する

DECLARE_DELEGATE_RetValマクロが、テンプレート引数を持つ型(この場合はTMap)を直接的にサポートしていないため、型エイリアスを使用する必要があります

/*下記はコンパイルエラー
DECLARE_DELEGATE_OneParam(FTMapDelegate, TMap<FString, int32>);
*/

//型定義
typedef TMap<FString, int32> FTestStringIntMap;
DECLARE_DELEGATE_OneParam(FMapDelegate, FTestStringIntMap);

【Unity】ReflectionProbe.customBakedTextureを変更しても見た目が反映されないときの対処方法

やり方

ReflectionProbeのenabledをオフ、オンにすると見た目が反映されるようになります

public ReflectionProbe reflectionProbe;
public Texture tex;
private void SetCustomBakedTexture)
{
    reflectionProbe.customBakedTexture = tex;
    reflectionProbe.enabled = false;
    reflectionProbe.enabled = true;
}

【Unity】VFXGraphでUIエフェクトを使用するとき描画順を調整する

はじめに

環境は Unity 6です

やり方

VFXGraphでUIエフェクトを出す時もParticle Systemとやり方は基本変わりません

yurinchi2525.com

ただし描画順の調整だけやりかたが異なります VisualEffectからRenderを取得することが出来るのでそのRenderのsortingOrderを調整することで描画順を調整することが出来ます

      private VisualEffect effect;

        private void SetSortingOrder(int sortingOrder)
        {
            var render = effect.GetComponent<Renderer>();
            render.sortingOrder = sortingOrder;
        }