17.

【UE5】C++で編集となっているコンポーネントをブループリントで編集する方法

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

Unreal Engine 5(UE5)では、一部のコンポーネントが「C++で編集」となっており、ブループリントから直接編集できないことがあります。しかし、いくつかの方法を使えば、ブループリント側で設定や動作を変更することが可能です。本記事では、その方法について詳しく解説します。

1. C++で編集可能なコンポーネントとは?

UE5では、C++で作成されたアクタ(Actor)やコンポーネントの中には、デフォルトではブループリントで直接変更できないものがあります。例えば、C++で定義されたプロパティ関数が「EditAnywhere」などの修飾子を持っていない場合、それらはブループリント上で編集することができません。

2. ブループリントで編集可能にする方法

ブループリントで編集するためには、C++側でいくつかの設定を行う必要があります。

2.1 プロパティを編集可能にする

C++のコード内で変数をブループリントから編集可能にするには、以下のようにUPROPERTYマクロを使用します。

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Settings")
float ExampleValue;

この設定を行うことで、ブループリントエディタ上で「ExampleValue」を変更できるようになります。

2.2 関数をブループリントで呼び出す

ブループリントからC++の関数を実行できるようにするには、UFUNCTIONマクロを使います。

UFUNCTION(BlueprintCallable, Category = "Actions")
void ExampleFunction();

この設定を行うことで、ブループリントのノードとして「ExampleFunction」を呼び出せるようになります。

3. 継承を利用してブループリントから編集する

完全にC++で定義されたコンポーネントを直接ブループリントで編集できない場合でも、C++で定義したクラスをブループリントクラスとして継承することで、設定を変更できるようになります。

手順は以下の通りです。

  • C++で基底クラス(親クラス)を作成
  • UE5のエディタ上で新規ブループリントを作成し、基底クラスを指定
  • ブループリントで変数や関数をオーバーライドして編集

4. コンストラクタでの初期化を見直す

コンポーネントがブループリントで変更できない理由の一つに、C++のコンストラクタで初期化が行われている場合があります。この場合、プロパティがブループリントで変更できるようにするには、以下のようにPostInitPropertiesをオーバーライドすることで解決できます。

void AMyActor::PostInitProperties()
{
    Super::PostInitProperties();
    MyValue = 100.0f; // デフォルト値を設定
}

5. まとめ

「C++で編集」となっているコンポーネントをブループリントで編集するためには、いくつかのアプローチが必要になります。

  • UPROPERTYマクロを使用してプロパティを公開
  • UFUNCTIONマクロでブループリント呼び出しを許可
  • ブループリントクラスをC++クラスから継承
  • コンストラクタでの初期化方法を見直す

これらの方法を活用することで、C++で作成されたコンポーネントをブループリント側で柔軟に編集・操作できるようになります。ぜひ試してみてください!

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
  1. 床の上に乗ったらイベントを発生させる方法
  2. OverlapAllDynamicとOverlapAllの違い
  3. タイトル画面を作る方法
  4. サードパーソンテンプレートでのキャラクター表示の仕組みと非表示にする方法
  5. ボタンに文字を記載する方法
  6. Event ActorBeginOverlapとOn Component Begin Overlapの違い
  7. キャラクターに特定のオブジェクトとの当たり判定を付ける
  8. 特定のオブジェクトに触れたとき、キャラクターが倒れるようにする
  9. 動いているオブジェクトに静止しているキャラクターが当たり判定を持たない原因と解決方法
  10. 「On Component Hit」に「Cast To ~」で複数のクラスを指定する方法
  11. ブループリントで途中から親クラスを指定する方法
  12. Blenderファイルをインポートする方法
  13. 鏡を作成する方法
  14. レベルブループリントでキャラクターの出現を設定する方法
  15. サードパーソンテンプレートにおけるキャラクター出現の定義
  16. アイテムに近づいたらボタンを押してイベントを発火させる方法
  17. C++で編集となっているコンポーネントをブループリントで編集する方法
  18. 画面の中央にメッセージを表示する方法
  19. どこからでも呼び出せるカスタムイベントを作成する方法
  20. カスタムイベントに引数を追加する方法
  21. ブループリントでWidgetに引数を追加する方法
  22. ブループリントでBoolean変数の初期値を変更する方法
  23. ブループリントで特定のキーが押された時にイベントを発火させる方法
  24. 「Get Overlapping Actors」から特定のクラスの場合のみ処理を実行する方法
  25. オブジェクトに近づいている間だけメッセージを表示する方法
  26. PCの画面を操作するUIを作る方法
  27. レベルを移動する方法
  28. コンテンツブラウザに画像を追加する方法
  29. マウスを動かせるUIを作成する方法
  30. SetInputMode_UIOnlyを取り消す方法
  31. ウィジェットの画像を選択するとウィジェットを閉じる方法
  32. 特定の画像の上にマウスカーソルを置いたら手マークにする方法
  33. レベルの「基本」テンプレートと「オープンワールド」テンプレートの違い
  34. オブジェクトがアウトライナーで選択できない原因と解決策
  35. PlayerStartを作成する方法