fc2ブログ

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

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

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE5/UE4 C++とBPの両方でオーバーライド(Override)できる関数を作成する(UFUNCTION(BlueprintNativeEvent)、UFUNCTION(BlueprintCallable)、_Implementation)

C++とBPの両方でオーバーライド(Override)できる関数を作成する方法です。

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

・仮想関数まわり、NativeEvent関数のオーバーライドについて
https://miyahuji111.hatenablog.com/entry/2017/03/31/085842

やりたいこととしては「C++でオーバーライドできる関数」なおかつ「BPでオーバーライドできる関数」となります。

参考サイトさんをもとに実際やってみました。

まずはC++で関数を定義します。

// C++ と BP でオーバーライドできる関数の定義
UFUNCTION(BlueprintNativeEvent, BlueprintCallable)
int32 OverrideFunction(float InValue); //!< 作りたい関数
virtual int32 OverrideFunction_Implementation(float InValue); //!< C++でオーバーライドする関数

まずは「UFUNCTION(BlueprintNativeEvent, BlueprintCallable)」を使って関数を定義します。
定義した関数の下に「virtual」を頭につけ、関数名の後ろに「_Implementation」を付けた関数を定義します。
こちらはC++側に実態が必要になり、C++でのオーバーライドされた関数となるようです。
※「関数名 + _Implementation」はUE側で自動的に紐づけられるようです。

C++での関数の実体はこんな感じで書きました。

// オーバーライドするC++の関数
int32 OverrideFunction_Implementation(float InValue)
{

return (0);
}


これを実行するとBPで上記で定義した関数をオーバーライド(Override)することができます。
オーバーライド関数002
こんな感じで「関数」の「オーバーライド(Override)」から関数を選択して作成することができます。

BPでオーバーライドされた関数はこんな感じになりました。
オーバーライド関数001

最後にC++側で実行してみます。

int32 aValue = OverrideFunction(0.0f);

結果をみてると「C++で定義した関数」と上記「BPの関数」両方が実行されるのがわかります。

C++で処理も行いたいが、BP側で特殊な処理をしたい。
といったもので結構使うことがありそうなので、記述の仕方など覚えておきたいと思いました。

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

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/780-4314908e

TRACKBACK

PREV | PAGE-SELECT | NEXT