18.

UE5でカスタムイベントに引数を追加する方法|入力パラメータの設定と使い方

編集

ブループリントのカスタムイベント(Custom Event)に引数を追加するには、イベントノードを選択して詳細(Details)パネルを開き、「Inputs」セクションの「+」ボタンで入力パラメータを追加し、名前と型(Variable Type)を指定します。これにより、イベントを呼び出すノードに入力ピンが現れ、呼び出し側から値を渡せるようになります。本記事では、2026年時点のUE5系を前提に、引数の追加手順から呼び出し側での値の渡し方、関数との使い分け、参照渡しの注意点までを解説します。

この記事の要点
  • カスタムイベントの引数は、ノード選択後の詳細(Details)パネル → Inputs → + から追加する。
  • 各引数には名前(Name)型(Variable Type)を設定でき、デフォルト値や並び順も指定できる。
  • 引数を追加すると、イベントノードに出力ピンが、呼び出しノードに入力ピンが自動的に生成される。
  • 戻り値(出力)が必要・処理を待ちたい(Latentノードを使う)場合は、関数(Function)とカスタムイベントの違いを理解して使い分ける。
  • 型を後から変更するとピンの接続が外れることがある。右クリックのRefresh Nodesで再同期する。

カスタムイベント(Custom Event)とは

カスタムイベント(Custom Event)は、ブループリントのイベントグラフ上に自分で定義できる「呼び出し可能な処理の入口」です。BeginPlayやTickのようなエンジン標準イベントと異なり、任意の名前を付けて好きなタイミングで呼び出せます。1つの処理のまとまりに名前を付けて再利用したり、Event Dispatcherや他のブループリントから実行をトリガーしたりする用途で広く使われます。

カスタムイベントは実行ピン(白い三角の実行フロー)を起点に処理を流すノードですが、初期状態では入力パラメータを持ちません。値を受け取って処理を分岐・反映させたい場合に、これから説明する手順で引数(入力パラメータ)を追加します。

引数(入力パラメータ)を追加する手順

カスタムイベントに引数を追加する基本的な流れは次のとおりです。操作はすべてブループリントエディタ内で完結します。

手順 操作内容
1 イベントグラフ上で対象のカスタムイベントノードをクリックして選択する。
2 画面右の詳細(Details)パネルを確認する。表示されていない場合はメニューの Window から開く。
3 詳細パネルの「Inputs」セクションを探し、横にある「+」ボタンをクリックして新しい入力パラメータを追加する。
4 追加された行で引数名(Name)を入力し、右側のドロップダウンで型(Variable Type)(Boolean / Integer / Float / String / Vector / 各種オブジェクト参照など)を選ぶ。
5 必要に応じてデフォルト値(Default Value)を設定する。複数引数がある場合は並び替え(上下の矢印やドラッグ)でピンの順序を整える。

引数を追加すると、イベントグラフ上のカスタムイベントノードに、指定した名前の出力ピンが自動的に増えます。このピンから、受け取った値を後続の処理ノードへ配線して利用します。

■ 例: ダメージ処理用のカスタムイベント「ApplyDamage」に引数を2つ追加

 Inputs に追加した引数:

 ・DamageAmount (型: Float) デフォルト値: 0.0

 ・DamageType  (型: Name または列挙型)

→ イベントノード「ApplyDamage」に DamageAmount と DamageType の出力ピンが現れる

呼び出し側で入力ピンに値を渡す

引数を追加したカスタムイベントは、グラフ上で名前を検索して呼び出しノード(Call ノード)として配置できます。呼び出しノードには、追加した引数に対応する入力ピンが表示されるので、ここに渡したい値を接続するか直接入力します。

■ 呼び出し側の流れ(例)

 1. グラフ上で右クリック →「ApplyDamage」と検索して呼び出しノードを配置

 2. 実行ピンを処理の流れに接続する

 3. DamageAmount ピンに「25.0」を入力(または変数を配線)

 4. DamageType ピンに渡したい値を接続

→ 実行されると、イベント定義側がこれらの値を受け取って処理を行う

ピンに何も接続しなかった場合は、引数に設定したデフォルト値が使われます(デフォルト値を設定できる型の場合)。値を必ず渡したい引数は、配線忘れがないか確認してください。

関数(Function)との使い分け

「名前を付けた処理を呼び出す」という点では、カスタムイベントと関数(Function)は似ています。しかし両者には明確な違いがあり、用途に応じて選ぶ必要があります。引数(入力パラメータ)を持てる点は共通ですが、戻り値や非同期処理の扱いが異なります。

項目 カスタムイベント(Custom Event) 関数(Function)
入力(引数) 持てる(Inputsで追加) 持てる(Inputsで追加)
戻り値(Outputs) 持てない 持てる
遅延・待機処理
(Delay等のLatentノード)
使える 使えない
非同期トリガーとの相性
(Event Dispatcher等)
結びつけやすい 直接は結びつけられない
向いている用途 時間差を伴う処理、外部からの通知で起動する処理、戻り値が不要な処理 値を計算して返したい処理、即座に完了する処理、ロジックの部品化

ポイントは、戻り値が欲しいなら関数Delayなどの待機(Latent)を挟みたいならカスタムイベントという基準です。関数の内部ではLatentノードを使えないため、待機を含む処理はカスタムイベントとして実装するのが一般的です。細かな制約はバージョンや実装状況により変わる場合があるため、確信が持てない挙動は公式ドキュメントの確認を推奨します。

参照渡し(Pass-by-Reference)の注意

引数の型設定には、値を渡す通常の方式のほかに参照渡し(Pass-by-Reference)の指定があります。引数行の型設定でリファレンス(参照)を有効にすると、呼び出し側で渡した変数そのものを参照する形になり、イベント内での変更が呼び出し元の変数にも反映され得ます。

参照渡しを使うときの注意
  • 参照渡しの入力ピンには、リテラル値(直接入力した固定値)を接続できないことがある。実体のある変数を配線する必要がある。
  • イベント側で値を書き換えると呼び出し元の変数も変化するため、意図しない副作用に注意する。
  • 構造体(Struct)や配列など大きなデータを渡す際、コピーを避けたい場合に有効だが、扱いには理解が必要。挙動に不安があれば公式ドキュメントの確認を推奨する。

落とし穴と対処

よくある落とし穴 対処方法
引数の型を後から変更したら、呼び出しノードのピン接続が外れた 型を変えるとピンの整合が崩れることがある。該当ノードを右クリックして「Refresh Nodes」を実行し、定義と呼び出しを再同期する。コンパイル時に出る警告も確認する。
引数名を変更したら呼び出し側のピン名と食い違って見える 変更後にブループリントをコンパイルし、必要なら呼び出しノードでRefresh Nodesを行うと表示が更新される。
Event Dispatcherと混同してしまう カスタムイベントは「呼び出される処理の入口」、Event Dispatcherは「イベントの発火を他者に通知・購読させる仕組み」で役割が異なる。Dispatcher自体に引数を持たせる場合も、設定箇所(Dispatcherの編集画面)が別である点に注意する。
入力ピンに値を渡し忘れて意図しない結果になる 未接続のピンはデフォルト値が使われる。重要な引数にはデフォルト値を設定するか、配線を必ず行う運用にする。

よくある質問(FAQ)

Q1. カスタムイベントに戻り値(出力)を持たせたいのですが、可能ですか?
A. カスタムイベントは戻り値(Outputs)を持てません。値を返したい場合は関数(Function)を使うか、結果を変数に書き込んで後から参照する、あるいは別のイベントで通知する設計にします。

Q2. 追加した引数の順番を入れ替えたいです。
A. 詳細(Details)パネルのInputsで、各引数行をドラッグまたは上下の操作で並び替えられます。順序を変えるとノード上のピンの並びも更新されます。並び替え後はコンパイルして表示を反映してください。

Q3. 引数の型に自作の列挙型(Enum)や構造体(Struct)は指定できますか?
A. 指定できます。型のドロップダウンで自作のEnumやStruct、各種オブジェクト参照型を選べます。プロジェクト内で定義済みであれば候補に表示されます。利用可能な型の詳細はバージョンにより異なる場合があるため、不明点は公式ドキュメントの確認を推奨します。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 床の上に乗ったらイベントを発生させる方法
  2. OverlapAllDynamicとOverlapAllの違い
  3. タイトル画面を作る方法
  4. サードパーソンテンプレートでのキャラクター表示の仕組みと非表示にする方法
  5. ボタンに文字を記載する方法
  6. Event ActorBeginOverlapとOn Component Begin Overlapの違い
  7. キャラクターに特定のオブジェクトとの当たり判定を付ける
  8. 特定のオブジェクトに触れたとき、キャラクターが倒れるようにする
  9. 動いているオブジェクトに静止しているキャラクターが当たり判定を持たない原因と解決方法
  10. 「On Component Hit」に「Cast To ~」で複数のクラスを指定する方法
  11. Blenderファイルをインポートする方法
  12. 鏡を作成する方法
  13. レベルブループリントでキャラクターの出現を設定する方法
  14. サードパーソンテンプレートにおけるキャラクター出現の定義
  15. アイテムに近づいたらボタンを押してイベントを発火させる方法
  16. 画面の中央にメッセージを表示する方法
  17. どこからでも呼び出せるカスタムイベントを作成する方法
  18. カスタムイベントに引数を追加する方法
  19. 「Get Overlapping Actors」から特定のクラスの場合のみ処理を実行する方法
  20. オブジェクトに近づいている間だけメッセージを表示する方法
  21. PCの画面を操作するUIを作る方法
  22. コンテンツブラウザに画像を追加する方法
  23. SetInputMode_UIOnlyを取り消す方法
  24. 特定の画像の上にマウスカーソルを置いたら手マークにする方法
  25. オブジェクトがアウトライナーで選択できない原因と解決策
  26. PlayerStartを作成する方法
  27. メニュー画面を作成して開く方法
  28. 「Esc」キーを押してメニュー画面を開く方法
  29. イベントの「On Clicked」と「On Pressed」の違い
  30. 「Set Input Mode」の種類と使い方
  31. 「Set Game Paused」の使い方と詳細解説
  32. Motion Matchingとは?
  33. 「GameMode」と「GameModeBase」の違い
  34. マップに配置したTargetPointを取得する方法
  35. TargetPointにタグをつけて取得する方法
  36. Spawnしたインスタンスがイベントを実行する方法
  37. 特定の時間ごとに処理を実行する方法
  38. 数値をランダムで出力する方法
  39. ThirdPersonテンプレートでキャラクターの移動を歩くように変更する方法
  40. MaxWalkSpeedを変更する方法
  41. しゃがむ動作を導入する方法
  42. キャラクターのアニメーションを設定する方法
  43. 導入済みのプラグインを確認する方法
  44. Motion Matchingの導入と必要なプラグイン
  45. プレイヤーを非表示にする方法
  46. カメラを傾ける角度を制限させる方法
  47. 配列からランダムに重ならない要素を特定の数取得する方法
  48. カメラの映す画面に文字やエフェクトを付ける方法
  49. キャラクターやメッシュを非表示にした際にカメラが移動しなくなる問題の解決方法
  50. プライマリーデータアセットを活用する方法
  51. プレイヤーのHPといった変数を定義する最適な場所
  52. カメラに映った画面をスクリーンショットとして保存する方法
  53. ゲーム内のカメラ映像を保存して再表示する方法
  54. HighResShot を使って高解像度の画像を保存する方法(UE5)
  55. HighResShotで保存した画像のファイル名を取得する方法
  56. SceneCapture2DとFrameGrabberの画像保存方法の比較
  57. SceneCapture2Dを使用して画像を保存・取得する方法
  58. HighResShotとTake High Res Screenshotの違い
  59. ゲーム終了ボタンを作成する方法
  60. 「Save Game To Slot」の戻り値がfalseになる問題の解決方法
  61. 画面上にメッセージを指定された時間表示させる方法
  62. シェーダコンパイル時間を短縮する方法
  63. 「Take High Res Screenshot」実行時に「シェーダをコンパイル」に長時間待たされる問題とその解決策
  64. データベースを活用する方法
  65. UE5.5がインストールされた環境にUE5.4を追加で導入する方法
  66. World PartitionとWorld Compositionの違い
  67. オープンワールドテンプレートとは?
  68. ポーンをスポーンさせても視点を切り替えない方法
  69. キャラクター同士がすり抜けてしまう問題の解決方法
  70. キャラクターの外見を動的に変更
  71. World Partitionでインスタンスが「アンロード済み」になる問題
  72. データ アセットとデータ テーブルの違い
  73. コンポーネントイベントグラフ内で親クラスの変数にアクセスする方
  74. エディターのソースコードの自動保存の頻度を高める方法
  75. SpawnActorでSpawn Transform Rotationが反映されない理由
  76. ミニマップを表示しポーンの位置を反映する方法
  77. RInterp ToとVInterp Toの違い
  78. 毎秒実行するイベントの定義方法
  79. Niagara のエフェクトにコリジョンを持たせる方法
  80. 「Overlap」と「Hit」の違い
  81. OverlapはあるがHitがない原因
  82. Overlapした位置の座標を取得する方法
  83. ブループリントでレベル間のパラメータを受け渡す方法

最近更新/作成されたページ