【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)); } }
【C++】デバックした際変数の中身が見えないときは最適化をオフにすれば見える
pragma optimizeで囲むことで最適化をオフにすることができ変数の中身が見えるようになります
#pragma optimize("", off) int myFunc() {...} #pragma optimize("", on)
【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とやり方は基本変わりません
ただし描画順の調整だけやりかたが異なります VisualEffectからRenderを取得することが出来るのでそのRenderのsortingOrderを調整することで描画順を調整することが出来ます
private VisualEffect effect; private void SetSortingOrder(int sortingOrder) { var render = effect.GetComponent<Renderer>(); render.sortingOrder = sortingOrder; }