あっぷあっぷブログ

UnrealEngine(ゲーム用途)関連の備忘録です。

【UE5】レベルを編集しても以前のデータが復活!? _ExtarnalActors_の呪い

環境

UE5.0

レベルの編集が反映されない事件が発生

今回のパターンは、World Partitionを使用していない通常のレベルで発生しました。
調査を進めた結果、どうやら「Extarnalフォルダ」や「One File Per Actor」が原因らしいという手がかりを得ました。

※ここでは通常のレベルをParsistantレベルの意味で使っています。

参考リンク

historia.co.jp

World Partition を使用すると作られる

「_ExtarnalActors_」フォルダはWorld Partitionを使用する場合に作られます。

新規でレベル作成で「OpenWorld」を選択できますが、World Partitionシステムが使われていますので、「_ExtarnalActors_」フォルダが作られます。
また他パターンでは、通常のレベルをWorld Partition対応のレベルに変換した際にも「_ExtarnalActors_」フォルダが作られると思われます。

※UE5.1ではデフォルトで作られている?

OpenWorldじゃないのに、勝手にExtarnalActorsフォルダが作られている?

通常のレベル編集時に、_ExtarnalActors_フォルダが作られる事例に遭遇しました。 エディタの環境設定を確認しましたが「One File Per Actor」はOFFになっていました。
これはおかしい...。

原因判明

私の場合ですが、LevelInstance作成が原因になっていたようです。
LevelInstanceの作成時に「ExtarnalActors」にチェックを入れた状態で作成すると、「ExtarnalActors」フォルダが作られます。
そこで作られたレベルを編集していて起きた事故でした。
「ExtarnalActors」の文字にはご注意を。

どう対処したか

問題が起きているMapファイルを複製したら、複製したMapに関しては「_ExtarnalActors_」フォルダは作られずに済みました。
これはあくまでWorld Partitionを使用していない通常のレベルでの話になります。

おまけ対処法

もし、意図せずExtarnalActors対応のMapファイルを作ってしまい。通常のExtarnalActors非対応のMapファイルに戻したい場合、以下の手順で改善するかもしれません。
※手順通りに実行しても「_ExtarnalActors_」フォルダが残ってしまいます。消したり色々試してみましたが、やり方として正しいかは微妙です。

エディタの環境設定 > 「One File Per Actor」と検索
「1アクタあたり1ファイルを有効化」にチェックを入れます。
まずは有効にして編集できる状態にしないといけません。

レベル内のアクタを選択した際に、パケージ化モードという項目が出現する

アクタを選択 > 詳細 > アクタ > 詳細設定 > パケージ化モード

自分はLevelInstanceの作成時やらかしたので、これがデフォルトで「外部」に設定されていました。「外部」というのはレベルに配置されたアクタの状態をMapファイル外に保存するということ、つまり「Extarnalフォルダ」を使うという意味になります。
レベルに配置したアクタの状態はMapファイルに保存したいので、「内部」に変更しておきます。

「One File Per Actor」をOFFにし、レベルを保存します。
これでレベル編集してみて、変更がちゃんと反映されるようであれば解決です。
これで一応は解決しました。

解決はしたがフォルダが残っているので消してみる

プロジェクトをエクスプローラーで開くと、Contentフォルダ以下に「_ExtarnalActors_」フォルダが存在します。
試しに消してみたのですが、ゲームプレイ時に何かよくわからない警告がでてしまいました。

LogLevel: Warning: Missing actor folder for actor BP_TestActor_C_UAID_3C7C....

ワールドセッティングの編集

再び「One File Per Actor」をOnにしてレベルのワールドセッティングを編集してみます。

ワールドセッティング> ワールド > 詳細設定 > 外部アクタを使用
「外部アクタを使用」のチェックを外します。
ゲームをプレイします。「_ExtarnalActors__」フォルダは存在しない状況でも、警告も表示されなくなりました。

消すのは危険?

試しに「外部アクタを使用」のチェックを入れてみました。
すると、「_ExtarnalActors_」フォルダがないよと怒られました。 再度フォルダを作ってあげたら消えてくれましたが、なんだか危険そうな気がしています。