fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE5/UE4 C++で「Pure関数」を関数指定子(UFunction)を使って作成する(UFUNCTION(BlueprintCallable)、UFUNCTION(BlueprintPure))

C++で「Pure関数」を関数指定子(UFunction)を使って作成する方法です。

こちらを参考にさせていただきました。

・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 定義する方法です。

UFUNCTION(BlueprintCallable)
int32 GetPureValue1() const;

こんな感じで const 定義したメンバ関数を作成して「UFUNCTION」に「BlueprintCallable」フラグを付けます。
BP で使うと結果はこんな感じに(DebugTest という Actor クラスで作りました)
Pure関数作成000
無事 Pure 関数になっているようです。

次に「UFUNCTION」で「BlueprintCallable」フラグと「BlueprintPure」フラグを設定する方法です。

UFUNCTION(BlueprintCallable, BlueprintPure)
int32 GetPureValue2();

こんな感じで「UFUNCTION」に「BlueprintCallable」と「BlueprintPure」を付けます。
BP で使うと結果はこんな感じに(DebugTest という Actor クラスで作りました)
Pure関数作成001
無事 Pure 関数になっているようです。

ただこれ、const 定義したものと「BlueprintPure」フラグを付けたものを比較すると、
「BlueprintPure」の方は「Target」が存在しないようになるのですがこれは一体…。。

ちょっとどこかで詳しく調べてみようと思います。
用途としてはどちらも問題なく使えるとは思いますが…。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/671-3c9260e5

TRACKBACK

PREV | PAGE-SELECT | NEXT