➖️

【UE5】C++を使ってAnimNotifyでソケット名の設定を検索付きで設定させる

2024/12/18に公開

概要

この記事は一人アドベントカレンダー by ダリアの18日目の記事です。

今回はC++を使って自作のAnimNotifyにソケット名の設定をする時に、候補を出してくれる機能の出し方についてまとめた記事になります。

想定してるイメージは以下となります。

AnimNotify_PlayNiagaraEffectの設定にあるSocketNameはsと入力したらsがつくソケット名を一覧で出してくれる

環境

UE5.4.4

やり方

やり方はUPROPERTYに指定したFNameの変数のmeta指定子に以下を追加するだけです。

meta=(AnimNotifyBoneName="true")

AnimNotifyのサンプルコード

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "AnimNotify_ExampleBoneName.generated.h"

/**
 * 
 */
UCLASS()
class UAnimNotify_ExampleBoneName : public UAnimNotify
{
	GENERATED_BODY()
public:
	UPROPERTY(EditAnywhere,BlueprintReadWrite,meta=(AnimNotifyBoneName="true"))
	FName SocketName;
};

上記のようなソースコードを作成して、UnrealEditorで自作のAnimNotifyを作成した時に下記画像のように入力したら候補が出る様になっていれば成功です。

注意点

こちらで試した所、下記のようなstruct型では使えないみたいでした。

USTRUCT(BlueprintType)
struct FExampleBoneName
{
	GENERATED_BODY()
public:
	UPROPERTY(EditAnywhere,BlueprintReadWrite,meta=(AnimNotifyBoneName="true"))
	FName SocketName;
};

追加した全体図のソースコード

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "AnimNotify_ExampleBoneName.generated.h"


+USTRUCT(BlueprintType)
+struct FExampleBoneName
+{
+	GENERATED_BODY()
+public:
+	UPROPERTY(EditAnywhere,BlueprintReadWrite,meta=(AnimNotifyBoneName="true"))
+	FName SocketName;
+};

UCLASS()
class ANIMNOTIFYBONENAMEEXAMPLE_API UAnimNotify_ExampleBoneName : public UAnimNotify
{
	GENERATED_BODY()
public:
	UPROPERTY(EditAnywhere,BlueprintReadWrite,meta=(AnimNotifyBoneName="true"))
	FName SocketName;
+	UPROPERTY(EditAnywhere,BlueprintReadWrite)
+	FExampleBoneName ExampleBoneName;
};

この状態で実行してみると、下記のように検索付きの項目ではなく、元のFNameの項目になっていました。

実際に使えるようにするやり方があるのかもしれませんが、自分の確認した環境で上記の構成だと出来なかったことを備忘録としてまとめさせてもらいました。

記事は以上となります。
ここまで読んでいただきありがとうございます。

Discussion