Unreal Engine のこれまでのバージョンでは、レベル内の 1 つまたは複数のアクタに変更を加える必要がある場合、ソース コントロールからファイルをチェックアウトする必要がありました。このため、自分の作業が終わるまで、チームの他のメンバーはそのファイルにアクセスできず、一度に一人しか作業できなかったため、開発プロセスの進行を妨げる場合がありました。
One File Per Actor (OFPA) (1 アクタあたり 1 ファイル) では、アクタのインスタンスのデータを外部ファイルに保存することで、アクタに変更を加える際にメインのレベル ファイルを保存する必要がなくなり、ユーザー間の重複を減らすことができます。
One File Per Actor 機能は、エディタでのみ使用できます。すべてのアクタは、クック時にそれぞれのレベル ファイルに埋め込まれます。
World Partition 使用時、One File Per Actor は、デフォルトで有効です。one-file-per-actor レベル外での OFPA の使用は、現在実験段階で、デフォルトでは無効です。one-file-per-actor 外で OFPA を有効にする手順は、以下のとおりです。
- メイン メニューから [Edit (編集)] > [Editor Preferences (エディタ環境設定)] を選択します。
- サイドバーから、[実験的機能] を選択します。
- [Tools (ツール)] セクションを見つけて、[One File Per Actor] のチェックボックスを有効にします。
One File Per Actor を有効にする
One File Per Actor 機能はきめ細かく設計されており、2 つの方法で使用できます
1 つ目の方法は、[Details (詳細)] パネルを使用して個々のアクタで手動で OFPA を有効にすることです。
一度に 1 つのアクタで OFPA を有効にしたい場合があります。このためには、[Details (詳細)] パネルの [Packaging Mode (パッケージ化モード)] オプションを探して、ドロップダウン メニューで [External (外部)] を選択します。
このオプションを選択後、レベル内のすべてのアクタでこの機能を有効するか確認するメッセージが表示されます。[Yes (はい)] を選択して、レベル内のすべてのアクタを OFPA へ変換するか、[No (いいえ)] を選択して、選択したアクタのみ有効にします。
アクタとレベル用に新しく作成した外部パッケージを保存する必要があります。その後は、アクタを修正してもレベルを保存する必要はありません。
2 つ目の方法は、One File Per Actor を有効にしてレベル全体で使用する方法です。
これを行うには、以下の手順に従います。
- [World Settings (ワールド設定)] パネルを開きます。メイン メニューで [Window (ウィンドウ)] > [World Settings (ワールド設定)] を選択します。
- パネルの [World (ワールド)] セクションに移動して、[Use External Actors (外部アクタを使用する)] の横のチェックボックスを有効にします。
- このオプションを有効した後、レベルをセーブします。
-
すべてのアクタを外部パッケージに変換するかどうかを確認するメッセージが表示されます。[Yes (はい)] を選択して、OFPA への変換を完了します。
サブレベルを変換する
レベルで [Use External Actors] オプションをオンにすると、現在のレベルだけが OFPA に変換されるため注意が必要です。サブレベルを変換するには、そのサブレベルをロードして、上記のとおりにそれぞれの [Use External Actors] を有効にする必要があります。レベルに複数のサブレベルが含まれている場合はこれが問題になる可能性があるため、レベルとそのサブレベルを自動的に変換するコマンドレットを使用することができます。
次の手順でコマンドレットを使用します。
-
コマンド プロンプト ウィンドウを開きます。
-
プロンプトで「UnrealEditor.exe」ファイルのある場所に移動します。例:
C:\Builds\Home_UE5_Engine\Engine\Binaries\Win64
. - 次に、コマンドを入力し始めます。コマンドレットを実行する
.exe
ファイルの名前、「UnrealEditor.exe
」から始めます。 -
コマンドレットの名前と次の引数を追加します。
-run="ConvertLevelsToExternalActorsCommandlet"
は、コマンドレッドの名前です。-nosourcecontrol
は、コマンドレッドにソース コントロールを使用しないよう指示します。-convertsublevels
は、コマンドレットにマップにあるすべてのサブレベルを変換するよう指示します。
-
コマンドの末尾にレベルの格納ディレクトリを指定します。 Level:
"/Game/Maps/TestMaps/ExternalActors/MasterMap"
この例では、Game はプロジェクト名で、MasterMap は変換するマップの名前です。 - 「Enter」キーを押してコマンドレットを実行します。コマンドレットがレベルとサブレベルを OFPA に変換します。
ソース コントロールと OFPA の併用
ソース コントロール アプリケーションで作業していると、外部アクタ ファイル名がエンコードされていることがわかります。この問題を解決するために、[View Changelist (変更リストの表示)] ウィンドウを使用して、送信前に変更リストの内容を表示して確認できます。
このウィンドウでは、既存の変更リストと変更リストに含まれているファイルが表示されます。外部アクタの場合は、エンコードされたファイル名ではなく、アクタ名、レベル パス、アセット タイプが表示されます。
エディタに内蔵されている変更リストのサポートにより、ソース コントロールに送信する前に、変更リストの内容を確認することができます。この確認は、OFPA によりプロジェクトが複雑になるために必要です。たとえば、ユーザーが複数のファイルをチェックアウトして、そのうちの一部のみを送信し、ダングリング参照が残る可能性があります。
Unreal Engine でのソース コントロールの使用に関する詳細は、「エディタ内のソース コントロール」を参照してください。
OFPA を使用する場合、コンテンツ ファイルとアクタ ファイルをエディタ内でソース コントロールに送信する必要があります。
ソース コントロール プロバイダとして、Perforce を使用している場合にのみ、変更リストのサポートを利用できます。