〇今回は、Pickupクラスに変数と関数を追加後、Pickupクラスを継承したBlurprintクラスを作成します。
※下図の水色枠部分が該当します。

〇ピックアップの状態(有効か?、無効か?)を確認する変数を追加
Pickup.h
protected: bool bIsActive;
【解説】
・protectedに変数宣言して、このクラスの派生クラスまたは、派生ブループリントクラスで変数を変更できることにする。
・ピックアップが有効ならtrue、無効ならfalse
〇ここまでの完成形

〇コンストラクタでデフォルト値セット
Pickup.cpp
bIsActive = true;
【解説】
・全てのピックアップは、有効な状態で始まることにする。
〇ここまでの完成形

〇有効無効の確認と、その状態を設定する関数を作成
Pickup.h
UFUNCTION(BlueprintPure, Category = "Pickup")
bool IsActive();
UFUNCTION(BlueprintCallable, Category = "Pickup")
void SetActive(bool NewPickupState);
【解説】
・関数なのでUFUNCTIONマクロを使う。
・BlueprintPure・・・Blueprintからの呼び出しが可能で、実行ピンを持たないノード。参照が発生する際に毎回実行される
・BlueprintCallable・・・Blueprintからの呼び出しが可能。処理順がそのノードに到達した際に実行される。
〇ここまでの完成形

〇ソースファイルで関数定義
Pickup.cpp
bool APickup::IsActive()
{
return bIsActive;
}
void APickup::SetActive(bool NewPickupState)
{
bIsActive = NewPickupState;
}
〇ここまでの完成形

〇ビルド>エラーがなければ、UEエディタへ移動
〇Pickupクラスを基づくブループリントクラスを作成
・ブループリントクラスを格納するために、予め「Blueprints」フォルダを作成しておく。

・「Pickup」を右クリック>「Pickupに基づくブループリントクラスを作成します」を選択

・ファイル名:Pickup_BP
・パスで、作成しておいた「Blueprints」をフォルダを選択
・「ブループリントクラスを作成」をクリック。

・「Pickup_BP」の編集エディタが自動的に開くが、一旦閉じて再度開いてみると、「データのみのブループリント」になる。
※ノード機能をもたせない場合は、この状態のままにしておくことも可能。
・StaticMeshに「SM_Cube」を設定。
・「コンパイル」と「保存」ボタンをクリック。

・レベルに、「Pickup_BP」を配置

・今回の作業はここまでです。
〇確認作業
・以下で行うのは確認作業なので、必須作業ではありません。
〇「Pickup_BP」のイベントグラフで、親クラス(Pickup)から継承した2つの関数を出してみる。
・Pickup_BPに戻って、フルブループリントエディタを開く。

〇イベントグラフで、2つの関数を出す
・「pickup」とタイピングすると、リストの上の方に「pickupカテゴリ」が見つかる。
※カテゴリが翻訳されていて見つからない場合は、直接「関数名」で絞り込んでみてください。

・検索された「Is Active」と「Set Active」の関数をそれぞれ選択し、ノードを配置する。
※IsActiveは、BlueprintPure関数なので、実行ピンがない。
※SetActiveは、BlueprintCallable関数なので、実行ピンがある。

※例えば、無効化する場合は、以下のようなロジック(処理の流れ)を組めばよい。

※実際にノードを配置した場合、ここでは2つのノードの違いを確認したかっただけなので、2つ共削除しておきましょう。

・今回は、基本的なピックアップをC++で組み、それを継承したブループリントで変数や関数を設定する方法を確認しました。
・次回は、ベースとなるPickup(C++)を継承する、「BatteryPickup」クラスをC++で作成していきます。
・以上、お疲れ様でした。