UE5/UE4 C++で「const」を付けた関数が自動的に「Pure関数」になってしまうのを関数指定子(UFunction)を使って防ぐ(UFUNCTION(BlueprintPure = false))
C++で「const」を付けた関数が自動的に「Pure関数」になってしまうのを関数指定子(UFunction)を使って防ぐ方法です。
こちらを参考にさせていただきました。
・【UE5】const関数をPure扱いにしない方法
https://shuntaendo.hatenablog.com/entry/2022/04/21/184426
公式ドキュメントはこちら。
・UFunction(関数指定子)
https://docs.unrealengine.com/4.27/ja/ProgrammingAndScripting/GameplayArchitecture/Functions/
「const」を付けていない関数を「Pure関数」にするのに「UFUNCTION(BlueprintPure)」を使いましたが、
逆に「Pure関数」にしないようにするためには「UFUNCTION(BlueprintPure = false)」と記述するようです。
というわけでこんな感じで2種類用意しました。
下は「UFUNCTION(BlueprintPure = false)」を記述した関数になります。
結果はこんな感じになりました。
通常の「const」を付けた関数は「Pure関数」になりました。

「UFUNCTION(BlueprintPure = false)」を記述した「const」を付けたの関数は「Pure」関数ではなくなりました。

処理のフローや回数によって使い分けるのが良いのかなと思います。
こちらを参考にさせていただきました。
・【UE5】const関数をPure扱いにしない方法
https://shuntaendo.hatenablog.com/entry/2022/04/21/184426
公式ドキュメントはこちら。
・UFunction(関数指定子)
https://docs.unrealengine.com/4.27/ja/ProgrammingAndScripting/GameplayArchitecture/Functions/
「const」を付けていない関数を「Pure関数」にするのに「UFUNCTION(BlueprintPure)」を使いましたが、
逆に「Pure関数」にしないようにするためには「UFUNCTION(BlueprintPure = false)」と記述するようです。
というわけでこんな感じで2種類用意しました。
上は通常の「const」のみ記述した関数で、UFUNCTION(BlueprintCallable)
int32 GetPureValue1() const;
UFUNCTION(BlueprintCallable, BlueprintPure = false)
int32 GetPureValue3() const;
下は「UFUNCTION(BlueprintPure = false)」を記述した関数になります。
結果はこんな感じになりました。
通常の「const」を付けた関数は「Pure関数」になりました。

「UFUNCTION(BlueprintPure = false)」を記述した「const」を付けたの関数は「Pure」関数ではなくなりました。

処理のフローや回数によって使い分けるのが良いのかなと思います。
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑