ちゃんとBPのクラスとか理解していますか?(;'∀')
今回は私も正直ちゃんと理解していますか?と聞かれると怪しい、
ブループリントにおいてのクラスについて、
私が知っている限りの知識などをメモした記事になります。
※UE5.6で説明をしていますがそこまで変化はないかと思います。
※書き間違え等あればコメントください!
※説明が間違っている部分などもコメントお願いいたします!
BPの作成とできることのおさらい
まずはBPを作るところから今回は説明していきましょう。
コンテンツブラウザを右クリックして作成したい、
ブループリント(BP)を選択します。

BPを選択すると親クラスを選択が出てきます。
親クラスを選択する必要あるんだろうか?と思う方もいるかもですが、
UEの場合はBP自体の役割が本当に多岐にわたります。
例えばゲーム上に配置したい場合はActorを選択したり、
操作キャラクターとして追加したい場合はCharacterを選択したりします。
用途に合わせた関数を使用したい場面がいくつも出てきます。
そういったときに困らないために親クラスを選択する形になります。
※親クラス選択しないとBPが作れないということもありますが・・・💦

実際に作成したBPを開くとBP編集画面になります。
画面の内訳としては下記のようになります。
上のメニューバー:BP関連のコンパイルや動作・クラス設定など
左のメニュー:ブループリントの各種変数などの追加項目欄
中央の画面:BPの編集などを行えるよう画面
右のメニュー:各種設定の詳細表示

一旦画面の説明やBPの説明は以上にして、
これから親クラス・子クラスの説明をしていきます。
BPの親クラスや子クラスについて
それでは実際に親クラスの設定について説明していきます。
親クラスを選択することによりいくつか追加されるものがあります。
・親クラスで設定したコンポーネント
・親クラスで定義されている関数を呼び出せる
・オーバーライドで大元の関数を改良した形で動作させたり出来る
・オーバーロードはUFUNCTION()上では行えなかったりする
下記画像はキャラクターという親クラスで作成されているComponentや、
イベントがすでに用意されている例になります。
他にも既に設定されているComponentの処理を設定できたりします。

親クラスの変更や設定などを行っていきます。
クラスの変更は上のメニューバーのクラス設定を選択して、
詳細の親クラスのドロップダウンリストから変更が可能です。

クラス設定の項目でよく活用するものについてまとめました。
〇クラスオプション
親クラス: 親のクラスを選択するためのドロップダウンリスト
非推奨 :マップ上に配置できるようにするか?(子クラスも対象になる)
Generate Const Class:定数クラスにするかどうか
Generate Abstract Class:抽象クラスにするかどうか
〇ブループリントオプション
RunConstrution Script or Drag:ドラッグ移動中でもコンストラクタを動作するか
RunConstrution Script in Sequencer:シーケンサーでコンストラクタを動作するか
Blueprint Namespace:名前空間を指定するか
〇インポート
デフォルトの名前空間:Blueprint Namespaceで設定したものが表示される
インポートした名前空間:他に設定された名前空間のものを呼び出す
〇インターフェース
継承インターフェース:親クラスに設定されているインターフェースが表示される
実装インターフェース:新規にクラスにインターフェースを追加する

ちなみに最初に選択されているクラスによって、
選択できない親クラスもあります。
オブジェクト関連のクラスとActor関連のクラスに分かれる形かと思います。

それでは実際に親クラスを作ってみましょうか。
今回は親クラス用の親クラスをObjectにしてます。
子クラスも作成します。
親クラスには先ほど作成したクラスを作成します。

実際に作成した2つのBPがこちらになります。

一旦親クラスの関数を作成していきます。
だいぶ簡単な形になりますがPrint Stringでコメントを残す形です。
※本来は様々な処理を追加しますが、今回は説明のため少量になります。

続いて子クラスの方で関数を作成していきましょう。
今回はオーバーライドでシーケンスでPrint Stringと、
親クラスの関数を呼び出す形になります。

オーバーライドの説明に関しては下記がよかったリンクになります。
残りはキャラクターの方で呼び出す処理を作成します。
今回はオブジェクトクラスが大元なので、
Constractノードで呼び出す感じで設定しています。

実際に動かしてみると問題なく呼び出した順序で動作しています。
実際に呼び出される順番としては下記になります。
1.「クリックアクション側の通知」のログ
2.「親クラスを呼ばない」のログ
3.「Call Parent Hello」のログ
最後に
ここまで見ていただきありがとうございました。
抽象クラスや定数クラスの活用などは別途いろいろ試していって、
紹介出来たらなと思います。
今回も見ていただきありがとうございました。