ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
この記事の要点
- File > Reparent Blueprint で既存 Blueprint の親クラスを差し替え可能
- 互換性のある親クラスのみ選べる(Pawn 系 → Pawn 系、Actor 系 → Actor 系等)
- 変数 / 関数は名前が一致すれば引き継がれる。型が違うとリンク切れ
- Native C++ クラスから派生 Blueprint への変更もできるが破壊的なので必ずバックアップ
- 罠: 他 Blueprint からの参照、Cast ノード、配列のエレメント型などが Missing 化 → リダイレクタや手動修正で対処
1Reparent Blueprint とは
Reparent Blueprint は、既に存在する Blueprint クラスの継承元(親クラス)を後から変更する機能です。例えば:
- 既に Actor として作ってしまった Blueprint を、後から Character 派生に変えたい
- 仮の C++ クラスから派生していた Blueprint を、本実装の C++ クラス派生に切り替える
- サブクラスをまとめるための中間 C++ 親クラスを途中で追加したい
通常はBlueprint 作成時に親クラスを選ぶものですが、開発が進むにつれて「やっぱり親を変えたい」というケースは頻繁にあります。Reparent はそのための機能ですが、慎重に扱わないと参照切れが多発する注意点も多いです。
2基本手順
- Content Browser で対象の Blueprint をダブルクリックして開く
- 上部メニュー File > Reparent Blueprint を選択
- 新しい親クラスをダイアログで選択
- 確認ダイアログで Reparent をクリック
- 変数や関数の引き継ぎ状況をログで確認
- Compile + Save
3互換性のあるクラスのみ選択可
Reparent ダイアログには互換性のあるクラスのみが表示されます。基本ルール:
| 元の親 | 変更可能な新親 |
|---|---|
| Actor | Actor 派生(Pawn / Character / 自作 AActor 派生 C++ 等) |
| Pawn | Pawn 派生 / Character / 任意 APawn 派生 |
| Character | Character 派生 / Character の親も可 |
| UserWidget | UserWidget 派生 |
| Object | UObject 派生 |
| ActorComponent | ActorComponent 派生 |
異なる継承ツリー間(例: Actor → UserWidget)への変更は不可です。コンポーネント体系が根本的に違うため。
4変数と関数の引き継ぎ
Reparent 時、Unreal Engine は以下のルールで変数・関数を引き継ぎます:
| 条件 | 結果 |
|---|---|
| 同名・同型の変数が新親にある | 新親のものを使い、Blueprint 側の宣言は削除 |
| 同名だが型違い | 新親のものを優先、値は失われる |
| 新親には存在しない | Blueprint の独自変数として残る |
| Override 関数で新親にも存在 | そのままオーバーライド継続 |
| Override 関数だが新親に存在しない | 関数定義は残るが何も呼ばれなくなる |
5典型的な使用例
例1: 仮の Blueprint Actor から C++ ベースに昇格
[元]
BP_MyEnemy (parent: AActor)
- 変数: Health, Speed, AttackDamage
- 関数: Attack, TakeDamage
[望ましい姿]
新規 C++: AEnemyBase : public AActor
- C++: Health, Speed, AttackDamage (UPROPERTY)
- C++: Attack(), TakeDamage() (UFUNCTION)
手順:
1. C++ クラス AEnemyBase を作成
2. BP_MyEnemy を開いて File > Reparent Blueprint
3. AEnemyBase を選択
4. 重複していた Health/Speed/AttackDamage は C++ 側に統一
5. Compile + Save
例2: Character 派生に格上げ
Actor として作ってしまった敵キャラを、移動ロジックを共通化するために Character 派生に変えたい場合:
- BP_Enemy を開く
- File > Reparent Blueprint → Character を選択
- CharacterMovementComponent が自動追加される
- SkeletalMeshComponent も追加 → 既存のメッシュ参照を移し替え
- 独自に作っていた移動ロジックを CharacterMovement に置き換え
6Reparent の罠と対策
罠1: 他 Blueprint からの参照切れ
BP_Enemy を参照していた他の Blueprint や Cast ノードが Missing になります。コンパイルエラーから一つずつ修正:
変更前: Cast to BP_Enemy
変更後: Cast to AEnemyBase (新しい親)
→ Cast の右クリックメニュー: Refresh All Nodes
→ コンパイル後の "Compiler Results" タブからジャンプ
罠2: 配列要素型の不整合
TArray<BP_Enemy> という配列が他で使われていた場合、Reparent 後にエレメント型が壊れます。型を更新するか、より上位の共通親型に変えるのが安全:
TArray<BP_Enemy> EnemyList; ← 型を再選択する必要あり
✅ 推奨: 上位の共通型で持つ
TArray<AActor*> EnemyList;
// もしくは
TArray<AEnemyBase*> EnemyList;
罠3: シーン配置済みインスタンスのコンポーネント欠落
Reparent で消えたコンポーネントがあると、シーンに配置済みのインスタンスから値が失われます。Outliner からインスタンスを選んで「Sync Components」または手動で再アタッチ。
罠4: Default 値のリセット
新しい親クラスにある同名変数は、Reparent によって新親の Default 値で上書きされる可能性があります。重要な初期値はメモしておきましょう。
7リダイレクタとリファレンス整合
クラス自体の名前を変えた場合は Class Redirects を DefaultEngine.ini に書くと、古い名前で参照していた箇所が自動で解決されます:
; DefaultEngine.ini
[CoreRedirects]
+ClassRedirects=(OldName="/Game/Old/BP_Enemy.BP_Enemy_C",NewName="/Game/New/BP_EnemyBase.BP_EnemyBase_C")
+ClassRedirects=(OldName="BP_Enemy",NewName="BP_EnemyBase")
8Reparent 前の安全策
- Git / Perforce にコミット(万一の取り戻し用)
- Content Browser で右クリック → Duplicate でバックアップ用 BP 作成
- Reparent 元の使われている箇所をリストアップ(Right click → Reference Viewer)
- テスト用シーンを作って動作確認してから本番シーンに適用
9復旧: Reparent でおかしくなったら
- Source Control から Revert する(最も確実)
- もう一度 Reparent して元の親に戻す
- Compile 時のエラーログから Missing 参照を一つずつ追跡
- Reference Viewer(右クリック → Reference Viewer)で依存関係を可視化
10Native C++ 親クラスへの Reparent
Blueprint だけだったクラスをC++ ベースに上げるパターン。手順:
- Editor > Tools > New C++ Class → 既存 Actor 等を継承する空クラス作成
- Blueprint を Reparent でその C++ クラスに変更
- Blueprint 側で実装していたロジックを徐々に C++ に移動
- Blueprint には Editor 設定や Override 中心、性能要件高い部分は C++ という分業
11FAQ
Q: Reparent しても変数 / 関数のサインアウトが効かない
A: Reparent 後 Compile + Save しないと変更が反映されません。エラー一覧から該当箇所を全部直してから保存。
Q: Reparent で消えた Componentを復活させたい
A: バックアップから設定値をコピーして再追加するしかありません。Reparent 前のスクショや BP 複製を残しておくのが鉄則。
Q: Reparent 後にエディタがクラッシュする
A: 致命的な参照不整合の可能性。Source Control から Revert して、より慎重な Reparent 戦略を検討してください。Project Saved/Logs にスタックトレースが残っているので、Anti-Crash でクラッシュ箇所を特定できます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- ブループリントで途中から親クラスを指定する方法
- C++で編集となっているコンポーネントをブループリントで編集する方法
- Boolean変数の初期値を変更する方法
- ブループリントで特定のキーが押された時にイベントを発火させる方法
- ブループリントで配列からインデックスを指定して取得する方法
- Blueprintで「Esc」キーを使ってイベントを発生させる方法
- Blueprintで「Cast To」を使い、複数のクラスに対応する方法
- Blueprintで指定した確率で処理を分岐させる方法
- FrameGrabberをBlueprintで使用する方法
- ブループリントで現在日時を取得する方法
- Enhanced Input とは?Input Action と Input Mapping Context の基本
- Enhanced Input でキー入力を受け取る手順
- 旧 Input Mappings から Enhanced Input へ移行する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Scratch 作品の公開方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?