概要
UEでアプリケーションを作っていると、ほかのプロジェクトでも使用したい処理はプラグインとしてまとめる方が多いと思います。
プラグインの作成中、プロジェクト内で作成したプラグインがプラグイン内で完結しているか確認するため、単体テストを行うと思いますが、その際、gitなどのバージョン管理で同期をとっていると煩わしくなってきます。
複数のプロジェクトで使用する際にプラグインへ変更を加えた場合に、ジャンクションを使用して同期をとることで変更時の各プロジェクトへの適用を簡略化します。
対象
UEで複数プロジェクトで使用する処理を、自作プラグインを作成しているが、いずれかのプロジェクトで変更を加えた場合に同期をとって影響を頻繁に確認したいと考えている方が対象です。
使用環境
プラグインを常時同期したい場合
プロジェクト外にチェックアウトする
UEプロジェクト外に、管理したいプラグインをクローンします。
D:\Work\koiusa\RidingSystemPlugin
管理したいプラグインのジャンクションを作成する
D:\Work\koiusa\Sandbox_UE5_2
UEプロジェクトのPluginsディレクトリにジャンクションを作成します。
mklink /j D:\Work\koiusa\Sandbox_UE5_2\Plugins\RidingSystem D:\Work\koiusa\RidingSystemPlugin\Plugins\RidingSystem
以降、プラグインのパス、UEプロジェクトのパス内のプラグインのどちらを変更しても両方に変更が反映されます。
プラグインを任意のタイミングで同期したい場合
UEプロジェクト内にサブモジュールを追加する
任意のタイミングで同期をとりたい場合は、gitのsubmodule機能を併用します。
UEプロジェクト内に、管理したいプラグインをサブモジュールとして追加します。
プロジェクト内にsubmoduleを格納するための、ディレクトリを作成します。
│ └─Sandbox_UE5_2
│ ├─forSubmodule
│ ・・・
│ ├─Contents
│ ・・・
│ ├─Plugins
│ ・・・
forSubmoduleに移動し、コマンドを実行するためのバッチファイルを作成します。
都度コマンドで実行しても問題ないですが、頻繁に実行す工程はバッチファイルにすることで効率化できます。
git submodule add --force https://github.com/koiusa/RidingSystemPlugin.git RidingSystemPlugin
git submodule update --remote ./RidingSystemPlugin
ジャンクションを作成する
subumoduleで取得したファイルから、対象のディレクトリのジャンクションをUEプロジェクトのPlugins内に作成します。
※基本運用はプロジェクト内に限定されるため、相対パスで指定します。
mklink /j ..\Plugins\RidingSystem .\RidingSystemPlugin\Plugins\RidingSystem
以上 ジャンクションを使用したプロジェクト間の同期方法でした。