UE5/UE4 C++で「Pure関数」を関数指定子(UFunction)を使って作成する(UFUNCTION(BlueprintCallable)、UFUNCTION(BlueprintPure))
こちらを参考にさせていただきました。
・UE4: Blueprint 向けに提供する C++ 関数を pure に定義するメモ
https://usagi.hatenablog.jp/entry/2018/03/07/064323
公式ドキュメントもこちらを参考にさせていただきました。
・ブループリントのプログラミングのガイドライン
https://docs.unrealengine.com/4.26/ja/ProgrammingAndScripting/Blueprints/TechnicalGuide/Guidelines/
基本的には参考サイトに書かれている二つの方法でPure関数を作ることができます。
1. AActor などの派生型でメンバー関数を pure にしたい場合
UFUNCTION で BlueprintCallable フラグを付けたメンバー関数を const 定義すれば自動的に blueprint でも pure になる。
2. UBlueprintFunctionLibrary 派生型の static メンバー関数を pure にしたい場合
UFUNCTION で BlueprintCallable フラグに加えて BlueprintPure フラグも付ける。
まずは一つ目の「UFUNCTION」で「BlueprintCallable」フラグを付けたメンバ関数を const 定義する方法です。
こんな感じで const 定義したメンバ関数を作成して「UFUNCTION」に「BlueprintCallable」フラグを付けます。UFUNCTION(BlueprintCallable)
int32 GetPureValue1() const;
BP で使うと結果はこんな感じに(DebugTest という Actor クラスで作りました)

無事 Pure 関数になっているようです。
次に「UFUNCTION」で「BlueprintCallable」フラグと「BlueprintPure」フラグを設定する方法です。
こんな感じで「UFUNCTION」に「BlueprintCallable」と「BlueprintPure」を付けます。UFUNCTION(BlueprintCallable, BlueprintPure)
int32 GetPureValue2();
BP で使うと結果はこんな感じに(DebugTest という Actor クラスで作りました)

無事 Pure 関数になっているようです。
ただこれ、const 定義したものと「BlueprintPure」フラグを付けたものを比較すると、
「BlueprintPure」の方は「Target」が存在しないようになるのですがこれは一体…。。
ちょっとどこかで詳しく調べてみようと思います。
用途としてはどちらも問題なく使えるとは思いますが…。
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑