ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Cast To とは
Cast To は Blueprint で「このオブジェクトは X クラス(およびその派生)として扱えるか」をチェックし、扱えるならその型として参照を返してくれるノードです。よくある使い方は次の流れです。
- Hit Result や Overlap イベントから
Other Actorを取得 - Cast To MyCharacter に流す
- 成功側ピンで MyCharacter の関数(
TakeDamage等)を呼ぶ - 失敗側ピンは何もしない(または別処理)
制約:Cast To は 1 クラス専用
1 つの Cast To ノードで判定できるクラスは 1 つだけです。たとえば「敵キャラ MyEnemy でも、味方 NPC MyAlly でも、それぞれ別処理をしたい」となると、Cast To だけでは表現に無理が出てきます。
本記事ではこのケースに対する 3 つの方法を比較します。
方法 1:連続キャストで分岐
もっとも直接的な方法は、Cast To を縦に並べることです。
Event Actor Begin Overlap
↓
Cast To MyCharacter
├─ Success → MyCharacter の処理
└─ Failed → Cast To MyEnemy
├─ Success → MyEnemy の処理
└─ Failed → Cast To MyItem
├─ Success → MyItem の処理
└─ Failed → 何もしない
長所
- 追加クラスが 1〜2 個なら一番手早い
- クラスごとに独自処理を書ける
短所
- クラスが増えるとノードグラフが下に長くなる
- 判定順に依存(先に書いたクラスが優先される)
- クラスを増やすたびにグラフを書き換える必要があり保守性が悪い
方法 2:共通親クラス(Base Class)を作る
UE5 のオブジェクト指向設計を活かす方法です。複数クラスに共通する「軸」(ダメージを受ける、拾える、調べられる…)ごとに 親クラスを作り、子クラスがそれを継承します。
| 親クラス例 | 共通処理 | 子クラス例 |
|---|---|---|
BaseDamageable | TakeDamage, OnDeath | MyCharacter, MyEnemy, BreakableObject |
BasePickup | OnPickedUp | HealthPotion, AmmoBox, Coin |
BaseInteractable | OnInteract | Door, Lever, NPC |
Event Actor Begin Overlap ↓ Cast To BaseDamageable ├─ Success → ApplyDamage(50) (子クラスでオーバーライド可) └─ Failed → 何もしない
長所
- Cast To は 1 個で済む
- 子クラスを増やしてもグラフは変えずに済む(OOP の継承)
- 関数オーバーライドで子ごとに挙動を変えられる
短所
- クラス階層を後から再設計するのが大変
- 「ダメージも受けるしアイテムでもある樽」のように多軸の能力には弱い(多重継承不可)
方法 3:Blueprint Interface を使う
もっとも柔軟なのが Blueprint Interface(BPI)です。インターフェースは「この関数を持っている」という契約だけを定義し、実装側は継承関係に関係なく好きに採用できます。
手順
- コンテンツブラウザで「Blueprints → Blueprint Interface」を新規作成(例:
BPI_Damageable) - インターフェース内で関数シグネチャを定義(例:
TakeDamage(Damage : float)) - 採用したい各 Blueprint(MyCharacter, MyEnemy, BreakableObject)で「クラス設定 → インターフェース → 追加」
- 各クラスで
TakeDamageイベントを実装
呼び出し側
Event Hit ↓ Does Implement Interface (BPI_Damageable) ├─ True → TakeDamage (Interface Call) を呼ぶ └─ False → 何もしない
または直接 TakeDamage (Message) を呼ぶことも可能で、対象がインターフェースを実装していなければ何も起きない安全な呼び出しになります。
長所
- 継承関係が不要。階層がフラットになる
- 1 クラスで複数のインターフェースを実装できる(多軸)
- Cast To よりパフォーマンスがやや有利(型解決が軽い)
短所
- インターフェース宣言と実装が分散するため、関数の所在を辿りづらい
- 戻り値が複雑な型の場合、デフォルト値の扱いに注意
3 方式の比較
| 観点 | 連続 Cast | 共通親クラス | Blueprint Interface |
|---|---|---|---|
| 実装の手軽さ | ◎ | ○ | △(事前準備が要る) |
| クラス追加時の改修 | ×(毎回修正) | ○(子追加だけ) | ◎(採用するだけ) |
| 多軸の能力 | ○ | ×(多重継承不可) | ◎ |
| パフォーマンス | △(キャスト連鎖) | ○ | ◎ |
| 可読性 | ○(局所的に見える) | ◎(親に集約) | △(分散) |
| 向く場面 | クラスが 2〜3 個 | 明確な階層 | 横断的な能力 |
実務での選び方
- クラスが 2〜3 個で固定、追加予定なし → 連続 Cast で OK
- 「ダメージを受ける」「拾える」など軸が明確 → 共通親クラスから始める
- 「樽は壊せるしダメージも受ける」のように能力が交差する → Blueprint Interfaceに切り替え
- 大規模プロジェクトでは親クラス+インターフェースの併用が定石
パフォーマンスの目安
Cast To は内部的に動的型チェック(IsA)を行うため、毎フレーム数千回呼ぶような状況では負荷になります。次の使い分けが目安です。
| 頻度 | 推奨 |
|---|---|
| イベント駆動(オーバーラップ・ヒット) | Cast To で問題なし |
| 毎フレーム数百回以上 | インターフェース呼び出しに切替 |
| BeginPlay などで 1 回だけ | Cast To で OK、参照を変数にキャッシュ |
関連
- プロジェクトを多言語化する方法
- RInterp To
- ブループリントで現在日時を取得する方法
- Event ActorBeginOverlap と On Component Begin Overlap の違い
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?