Unreal Engine4でプロジェクト名を変更する方法(C++化してしまった場合)

#前置き
UE4でゲームを作り出す時点で適当な名前を付けてしまって後から変えたくなった、更にプラグイン等の導入でC++化してしまった私の備忘録です。
Twitterでは文字数全然足りなかったので…。
C++コード打つ方はこんなことで困らないと思うので、需要は無いかもしれませんが、私のような人もいるかもしれませんので参考に残しておこうと思います。

BPのみのプロジェクトであれば、おかずさんの記事に解決方法がありますのでそちらを参照してください。
ご説明頂いている通りにクローン化をするとC++化したプロジェクジェクトの場合、slnファイルやその他の名前が元のままになります。
でも、動いてUEのプロジェクト名が変わればそれでいいんだよ、という方には以下の記事は参考になりません。

今回は、そういうところもなんか気持ち悪い！！！という稀な方向けです。

https://pafuhana1213.hatenablog.com/entry/2015/05/13/002703

また、今回の記事はあくまでも私の環境ではこれで問題なかった、という内容ですので全ての環境で同じ手順かどうかはわかりませんことと、類似部分はある程度省きますのでこの点をご留意ください。
<font color="FF0000">※ソースファイルを直接書き換えますので不安な方はやめておきましょう。
最悪直せなくなってプロジェクトが開けなくなる恐れがありますので自己責任でお願いします。</font>

#手順
※Unreal Engine4.27.2での記事です。
　1.変更したい元のプロジェクトのクローンを作成
　2.一部ファイルを直接書き換え

##1.変更したい元プロジェクトのクローンを作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/08d724b3-cea5-f8fe-5974-1bdd29381a08.png)

色々触って動かなくなってしまうなどのトラブルが発生する可能性がありますので必ずクローンしてバックアップをしておきましょう。

クローンボタンを押して新しいプロジェクト名を入力することになりますが、警告が出ます。
ここではTESTProjectからHogeに変更するとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/780ffdff-3329-932f-3359-ae8dd066169a.png)

構わず続けるを押しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/8dc57612-7f0b-d45e-de02-0ccf79a530f0.png)


クローンが出来ました。
が、しかしslnファイルの名前がそのまま、Sourceフォルダ内もいくつかそのままの名前のものがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/6c358e50-eb89-3b6c-52a5-3011b6c23b4b.png)
更にC++クラスを追加しようとすると警告が発生します。
複数ファイルのリネームと、中身を直接書き換えを行って解決したいと思います。

##2.一部ファイルを直接書き換え
<font color="FF0000">注意)この作業を始めると問題なく書き換えが全て終わるまで.uprojectがエラーで開けなくなります。</font>

書き換えが必要なファイル/フォルダ
・/TESTProject.sln
・/Source/TESTproject.Target.cs
・/Source/TESTprojectEditor.Target.cs
・/Source/TESTProject/TESTProject.Build.cs
・/Source/TESTProject/TESTProject.cpp
・/Source/TESTProject/Hoge.h
・Pluginによって追加された.hファイル
・自身で追加した.hファイル
・/Config/DefaultEngine.ini
・Hoge.uproject
・その他、旧プロジェクト名が存在するファイル

このファイル達の中に、以前のプロジェクト名である、"TESTProject"という文字列が残っています。
これを全て"Hoge"置換えていきます。
合わせて、このファイル達のファイル名もHoge.Target.csなどのように全てリネームします。
TESTProject.slnを開いてファイル名も書き換えもVisualStudio上で行うのをオススメします。

例)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/51efda5d-4470-463b-530f-a79256c1d467.png)
TESTProject.cpp(3箇所ありますが全て置換え)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/62d22609-d401-eb62-2f84-13c7a038ba84.png)
MyCharacter.h(自分で追加したC++クラス。ここは全て大文字)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/f4c4ace5-0430-c3e9-e996-67f8d34f59d7.png)
Hoge.uproject(ここにもあります)

書き換えが終わったらVisualStudioを閉じてHoge.uprojectを起動してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/f5649c9a-a3c8-8269-e7b2-c9168de4136d.png)
上のように出るのでリビルトということではいを選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/03eb6a36-7b7e-9488-bc06-29e6d8e23785.png)

あら、どこかおかしいようです。
この時点で絶望を感じますが、Logを確認してみましょう。
/Saved/Logsフォルダ内の更新日時が一番新しい.logファイルを確認。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/c9f7cca9-aca9-f4ee-efbb-893700b20a46.png)


どうやらHoge.Target.csがおかしいらしい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/91c13da6-3129-d0e9-bf69-625e8b2082ec.png)
ということで元ファイルの同じ.csファイルと比べて確認してみたら書き換えた部分からTargetが抜けてしまっていたようです。
HogeTargetに修正。
それでは気を取り直して再度Hoge.uprojectを開きます。
正しく書き換えが完了していれば以下のようにビルドが走るはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/e824f7ee-4eab-7870-b92b-25a02c208894.png)

無事にプロジェクトを開くことができました。
右上のプロジェクト名もHogeになっていますね。
では、警告が出ていた新規C++クラスの追加を確認してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/e2ed5844-c241-779f-86d4-3bd0cbd321fb.png)

とりあえず適当にActorクラスを追加してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/2fc1719a-c7ba-2f29-f7ee-0e029b815282.png)

無事に警告なしで追加することができました！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2285992/8869ed87-8470-b958-66ea-23fc9f5335b0.png)


#まとめ
あらゆる箇所を元プロジェクト名から新プロジェクト名にひたすら書き換える、というだけでした。
書き換え漏れやミスも、Logファイルをたどってどこでエラーが出てるかを確認して修正すれば大丈夫です。
ヘッダーとかよくわかってませんがとりあえずこれで問題なく動いておりますし、Windowsパッケージ化、Androidパッケージ化も試しましたがエラーは出ませんでした。

ニッチな需要かとは思いますが参考になれば幸いです。