この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:7
ページ更新者:T
更新日時:2026-06-11 07:10:02

タイトル: ブループリントで途中から親クラスを指定する方法
SEOタイトル: Unreal Engine Blueprint 親クラス変更 (Reparent) 完全ガイド(互換性 / 罠 / 復旧)

この記事の要点
  • File > Reparent Blueprint で既存 Blueprint の親クラスを差し替え可能
  • 互換性のある親クラスのみ選べる(Pawn 系 → Pawn 系、Actor 系 → Actor 系等)
  • 変数 / 関数は名前が一致すれば引き継がれる。型が違うとリンク切れ
  • Native C++ クラスから派生 Blueprint への変更もできるが破壊的なので必ずバックアップ
  • : 他 Blueprint からの参照、Cast ノード、配列のエレメント型などが Missing 化 → リダイレクタや手動修正で対処

Reparent Blueprint とは

Reparent Blueprint は、既に存在する Blueprint クラスの継承元(親クラス)を後から変更する機能です。例えば:

  • 既に Actor として作ってしまった Blueprint を、後から Character 派生に変えたい
  • 仮の C++ クラスから派生していた Blueprint を、本実装の C++ クラス派生に切り替える
  • サブクラスをまとめるための中間 C++ 親クラスを途中で追加したい

通常はBlueprint 作成時に親クラスを選ぶものですが、開発が進むにつれて「やっぱり親を変えたい」というケースは頻繁にあります。Reparent はそのための機能ですが、慎重に扱わないと参照切れが多発する注意点も多いです。

基本手順

  1. Content Browser で対象の Blueprint をダブルクリックして開く
  2. 上部メニュー File > Reparent Blueprint を選択
  3. 新しい親クラスをダイアログで選択
  4. 確認ダイアログで Reparent をクリック
  5. 変数や関数の引き継ぎ状況をログで確認
  6. Compile + Save

互換性のあるクラスのみ選択可

Reparent ダイアログには互換性のあるクラスのみが表示されます。基本ルール:

元の親変更可能な新親
ActorActor 派生(Pawn / Character / 自作 AActor 派生 C++ 等)
PawnPawn 派生 / Character / 任意 APawn 派生
CharacterCharacter 派生 / Character の親も可
UserWidgetUserWidget 派生
ObjectUObject 派生
ActorComponentActorComponent 派生

異なる継承ツリー間(例: Actor → UserWidget)への変更は不可です。コンポーネント体系が根本的に違うため。

変数と関数の引き継ぎ

Reparent 時、Unreal Engine は以下のルールで変数・関数を引き継ぎます:

条件結果
同名・同型の変数が新親にある新親のものを使い、Blueprint 側の宣言は削除
同名だが型違い新親のものを優先、値は失われる
新親には存在しないBlueprint の独自変数として残る
Override 関数で新親にも存在そのままオーバーライド継続
Override 関数だが新親に存在しない関数定義は残るが何も呼ばれなくなる

典型的な使用例

例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 派生に変えたい場合:

  1. BP_Enemy を開く
  2. File > Reparent Blueprint → Character を選択
  3. CharacterMovementComponent が自動追加される
  4. SkeletalMeshComponent も追加 → 既存のメッシュ参照を移し替え
  5. 独自に作っていた移動ロジックを CharacterMovement に置き換え

Reparent の罠と対策

罠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 値で上書きされる可能性があります。重要な初期値はメモしておきましょう。

リダイレクタとリファレンス整合

クラス自体の名前を変えた場合は Class RedirectsDefaultEngine.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")

Reparent 前の安全策

  1. Git / Perforce にコミット(万一の取り戻し用)
  2. Content Browser で右クリック → Duplicate でバックアップ用 BP 作成
  3. Reparent 元の使われている箇所をリストアップ(Right click → Reference Viewer)
  4. テスト用シーンを作って動作確認してから本番シーンに適用

復旧: Reparent でおかしくなったら

  • Source Control から Revert する(最も確実)
  • もう一度 Reparent して元の親に戻す
  • Compile 時のエラーログから Missing 参照を一つずつ追跡
  • Reference Viewer(右クリック → Reference Viewer)で依存関係を可視化

Native C++ 親クラスへの Reparent

Blueprint だけだったクラスをC++ ベースに上げるパターン。手順:

  1. Editor > Tools > New C++ Class → 既存 Actor 等を継承する空クラス作成
  2. Blueprint を Reparent でその C++ クラスに変更
  3. Blueprint 側で実装していたロジックを徐々に C++ に移動
  4. Blueprint には Editor 設定や Override 中心、性能要件高い部分は C++ という分業

FAQ

Q: Reparent しても変数 / 関数のサインアウトが効かない
A: Reparent 後 Compile + Save しないと変更が反映されません。エラー一覧から該当箇所を全部直してから保存。

Q: Reparent で消えた Componentを復活させたい
A: バックアップから設定値をコピーして再追加するしかありません。Reparent 前のスクショや BP 複製を残しておくのが鉄則。

Q: Reparent 後にエディタがクラッシュする
A: 致命的な参照不整合の可能性。Source Control から Revert して、より慎重な Reparent 戦略を検討してください。Project Saved/Logs にスタックトレースが残っているので、Anti-Crash でクラッシュ箇所を特定できます。