レベル遷移しても任意のアクターを保持したい

▼行いたいこと
パーシスタントレベルが変わっても、指定したアクターが破棄されずに残るようにしたい。

▼理由
例えば街とダンジョンを別のパーシスタントレベルで管理しています。
街とダンジョンが切り替わるとプレイヤーが再スポーンされます。

このときに、例えば毒などのステータス異常を引き継ぎたいとします。
しかし、制限時間や重ねがけの状態などを、再現するのがかなり面倒で、
それだったらプレイヤーとプレイヤーに連なるアクターが破棄されなければ楽なのに…と思いました。

街とダンジョンを同じパーシスタンとレベルで作ることも考えたのですが、
ものすごく巨大なレベルになりそうで、あまりやりたくないと思いました。

このあたりなにか知見をお持ちの方はいらっしゃいませんでしょうか?

恐れ入りますがよろしくお願いします。

同じパーシスタントレベルにはなりますが、サブレベルは動的にロード・アンロードが可能です

それがLoadLevelInstance系のノードです

これで前のMAPのサブレベルをすべてアンロードし、そのあと新しいMAPをロードしたうえで
移動先にキャラクターをワープすることで前のキャラクターを保持したまま別のMAPに移動したようにできます。

この方法の問題点はレベル間でGameModeの変更ができないこと、プレイヤーキャラクター以外のすべてを自分でDestroyしないとほかのActorもすべて残ってしまうことですね。
GetAllActorofClassやwithTagによって取得するのが良いと思われます。

一応、「1つの巨大なレベル」になる問題についてはこれで解消するので
方法の一つとしてどうぞ。

ご回答いただきありがとうございます。
ご提示頂いた内容はとても有用と思いつつ、引き続きパーシスタントレベルが変更されても任意のアクターを保持する方法も探したいです。

この機能自体は別のケースで利用したいと思いました。

プレイヤーキャラクター以外のすべてを自分でDestroyしないとほかのActorもすべて残ってしまうこと

ちなみにパーシスタントレベルに置くもの、サブレベルに置くものを明確にすれば、このあたりはそんなに問題にならなさそうですね。

ありがとうございました。

1 Like