x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

[Closed] レベル再読み込みについて

お世話になっております。

現在のレベルを再度読み込みなおすという処理を行なう場合がありUGameplayStatics::OpenLevel()関数で行なっておりますが、十数秒の時間が掛かってしまい何とか短縮する方法が無いか調査しております。 オフラインプレイのゲームのためAGameModeBaseを使用しており、AGameMode::RestartGame()を使うことも出来ません。 このような同じレベルをやり直したい場合に有効な方法は御座いますでしょうか?

Product Version: Not Selected
Tags:
more ▼

asked Oct 26 '18 at 11:10 AM in Japanese

avatar image

Answers.Archive STAFF
1.9k 208 316 688

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

The question has been closed Oct 26 '18 at 11:18 AM by Ken.Kuwano for the following reason:

The question is answered, right answer was accepted


2 answers: sort voted first

OpenLevelでは、Levelのデータの破棄とその後再ロードが走るため、どうしても時間がかかってしまいます。対策としてましては、レベルに紐付かない常駐データとして共有オブジェクトを保持しておく方法が良いかとは思います。永続的なデータの保持は以下のブログなどがご参考になるかと思われます。

UE4 GameInstanceでグローバルに値を扱う

ご参考になれば幸いです。

more ▼

answered Oct 26 '18 at 11:10 AM

avatar image

Answers.Archive STAFF
1.9k 208 316 688

avatar image Answers.Archive STAFF Oct 26 '18 at 11:10 AM +

ご返答ありがとうございます。

既にゲーム全体を通して使用するデータ等は永続的データとして保持しております。

背景モデルなどゲームプレイ中に変化の無いものは残し、AIキャラやマップギミック等ゲームプレイによって変化するもののみをリロードできれば良いのですが、 サブレベル単位での解放&再ロードでは、操作しないサブレベルに配置されたアクターのBeginPlay()が呼び出されないため、BeginPlay()でなんらかの初期化処理を行なっている場合に問題が発生してしまいます。

そのためOpenLevel()でのリロードを已む無く行なっている状況です。 もし上記の問題を解決できる方法が御座いましたらご教授いただけると助かります。

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

お世話になっております。

ResetLevelというコンソールコマンドもあります。現在のレベルを最初の状態に戻したい場合は、それは聞くけど、各プロジェクトで何をリセットする必要があるか異なりますので、こういう実装はプロジェクト側の方が向いています。ResetLevelはすべてをリセットしますので、あるコードを再度実行するやあるアセットをリロードするかもしれませんが、プロジェクト側で何をリロード・リセットするべきしないべき判断出来ますので、もっと最適化のリセットする方法を実装するのは可能です。エンジン側で、一般的なケースしか対応出来ないので、ResetLevel以上の実装はEngine側の対象外になります。

よろしくお願いします。

more ▼

answered Oct 26 '18 at 11:10 AM

avatar image

Answers.Archive STAFF
1.9k 208 316 688

avatar image Answers.Archive STAFF Oct 26 '18 at 11:10 AM

情報ありがとうございます。 ResetLevelを試したうえで必要に応じて独自実装を検討します。

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question