LoginSignup
9
6

More than 3 years have passed since last update.

UE4でC++クラスを親に持つBPクラスを他のプロジェクトに移行する

Posted at

背景

UE4でC++クラスを親に持つBPを他のプロジェクトに移行すると、
 親クラスを見失ってBPをコンパイルできなくなる(そもそも開けなくなる)ため、
  親のC++クラスも一緒に移行しましょう。というお話。

参照URL

フォーラムにドンピシャの答えがありました。助かった…
https://forums.unrealengine.com/development-discussion/blueprint-visual-scripting/24493-migrate-code-based-blueprint

手順

-1. C++ファイルをコピペ
元プロジェクトの必要なC++ファイル(.h, .cpp)をエクスプローラ上で移行先プロジェクトにコピーします。

-2. VSプロジェクトを更新
NewProject.uprojectを右クリック → Generate Visual Studio project files
 でVisual Studioに新しいファイルたちを認識させます。

-3. ヘッダーファイルを修正
ヘッダーファイル内のOLDPROJECT_APIをすべてNEWPROJECT_APIに置換します。

-4. コンパイル
ここまでの作業でVisualStudio上でビルドが通るか確認して一安心しましょう。

-5. Config/DefaultEngine.iniの編集
DefaultEngine.iniにリダイレクタを追記します。

[CoreRedirects]
+ClassRedirects=(MatchSubstring=True,OldName="/Script/OldProject",NewName="/Script/NewProject")
+EnumRedirects=(MatchSubstring=True,OldName="/Script/OldProject",NewName="/Script/NewProject")
+FunctionRedirects=(MatchSubstring=True,OldName="/Script/OldProject",NewName="/Script/NewProject")
+StructRedirects=(MatchSubstring=True,OldName="/Script/OldProject",NewName="/Script/NewProject")
+PackageRedirects=(OldName="/Script/OldProject",NewName="/Script/NewProject")

  これでスクリプト内のプロジェクト名をNewProjectに読み替えてくれるようになります。
   MatchSubstring=Trueがミソで、個別のファイルを指定しなくても機能します。

-6. 晴れてBPの移行
OldProjectをUEエディタで開いて
 BPを右クリック→アセットアクション→移行 でNewProjectのContentフォルダにBPをコピー

-7. NewProjectを開いて参照関係が崩れていないか確認
 やったー( ;∀;) 3日くらい悩んだ…

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6