0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UE5 ナイアガラパラメータコレクションに関するメモ

Posted at

概要

UnrealEngine5 の Niagara のパラメータ関連のメモ書きです。

更新履歴

日付 内容
2024/09/27 初版

参考

以下の記事を参考にいたしました、ありがとうございます。
UE公式:UNiagaraComponent
UE公式:UNiagaraParameterCollection
[UE5.3.2][Niagara]Niagara Parameter Collection の使い方
UE5 Niagara C++ドキュメント(非公式)

ナイアガラコンポーネント(UNiagaraComponent)

ナイアガラを扱うためのコンポーネントです。スカラーパラメータ等を入れる際に使ったりします。

.cpp
	// ナイアガラエフェクト生成
	UNiagaraComponent* _NC = UNiagaraFunctionLibrary::SpawnSystemAttached(...省略...);

	// パラメータを入れる 
	_NC->SetVariableFloat(TEXT("Scale"), 0.5f);
 	_NC->SetVariableVec3(TEXT("Position"), FVector(0.0f, 0.0f, 100.0f));

ナイアガラパラメータコレクション(UNiagaraParameterCollection)

ナイアガラエフェクトシステムで使用される共通のパラメータセットで、複数のエミッタなどでパラメータを共有しまとめて更新することができます。

[FX]->[高度]->[Niagaraパラメータコレクション]でアセットを作成します。

パラメータは[+]から追加することができます。
NiagaraParameterCollection.png

使い方

エミッタのパラメータを差し替える

ナイアガラシステムの[パラメータ]ウィンドウの[Niagaraパラメータコレクション]の[+]から作成したナイアガラパラメータコレクションアセットを登録します。

NPCに登録されているパラメータ一覧が表示されるのでそれをエミッター詳細ウィンドウの適用したい変数へドラッグ&ドロップすると適用されます。

型が違う場合は警告が出ます。

パラメータを取得する

C++ にてナイアガラパラメータコレクションからパラメータを取得できます。

C++.h
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Niagara")
TObjectPtr<UNiagaraParameterCollection> NPC;
.cpp
	// ナイアガラパラメータコレクションインスタンスを取得する
	UNiagaraParameterCollectionInstance* _NPCI = NPC->GetDefaultInstance();
	if(_NPCI){
		// NPCIからパラメータ取り出し
		const float _Scale = _NPCI->GetFloatParameter(FString(TEXT("Scale")));
		const FVector _Position = _NPCI->GetVectorParameter(FString(TEXT("Position")));
	}

パラメータ名を取り出す

ナイアガラパラメータコレクションに設定されたパラメータ名を取り出すこともできます。以下コード例。

.cpp
auto _NPCI = NPC->GetDefaultInstance();
// ネームスペース 
const FString _Namespace = _NPCI->GetParent()->GetFullNamespace();

// パラメータ名を取り出す
TArray<FNiagaraVariable> _OutParams;
_NPCI->GetParameters(_OutParams);
for (const auto& _Prm : _OutParams) {
	FString _Full = *_Prm.GetName().ToString();
	FString _Short = _Full.Replace(*_Namespace, TEXT(""), ESearchCase::IgnoreCase);
	UE_LOG(LogTemp, Log, TEXT("Full:%s / Short:%s"), *_Full, *_Short);
}

これを利用してデータアセット的な使い方も可能です。

ナイアガラパラメータインスタンス(UNiagaraParameterCollectionInstance)

ナイアガラパラメータコレクション(NPC)から作成できるインスタンスでパラメータのオーバーライドができます。

基本はNPCからの値を使用するが、一部だけ差し替えたい場合などに使えます。

まとめ

複数のナイアガラシステムからのパラメータ共有に便利だと思います。実行中にNPCを変更した場合はどうなるのかよくわかりません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?