UE5/UE4 C++でアセットファイルを同期読み込み(ロード)する(LoadObject)
こちらを参考にさせていただきました。
・【UE4】同期的なアセットのロード方法とデメリット
https://qiita.com/4_mio_11/items/00de94dbb6b6ed59176f
・(UE4 4.20) UE4 synchronous loading and asynchronous loading UObject ----------LoadObject, LoadClass, FStreamableManager
https://blog.karatos.in/a?ID=00850-b316c715-b75c-4f8b-b2b4-1f35208560dd
「LoadObject」関数を使うことで直接アセットファイルを読み込む(ロードする)ことができます。
こんな感じですね。
// データテーブル(UDataTable)アセットの読み込み
// アセットファイルへのパス
FString aDataTablePath("/Game/DataTable/DT_NewDataTable.DT_NewDataTable");
// LoadObject を使った同期読み込み(ロード)
TObejctPtr< UDataTable> aDataTable;
aDataTable = LoadObject< UDataTable>(nullptr, (*aDataTablePath), nullptr, LOAD_None, nullptr);
「LoadObject」関数はあくまで同期読み込みの処理となります。
なので、実際にゲームで使う場合は別の非同期読み込みで対応するようにしたいですね。
注意点は参考サイトさんに書かれています。
前提として知っておきたいデメリット
まず、同期的なロードを扱うと、ロード処理中はメインスレッドを占有してしまうため、
プレイヤーから見るとUIも処理も止まってゲーム画面がフリーズしているように見えたりかくついて見えます。
そのため、ミニマムなアセットロードを行う処理であれば問題ありませんが、
重いアセットのロードを一気に行うとユーザー体験を損ねる可能性があるので注意が必要です。
この場合は非同期なロードを行う必要があります。
「LoadObject」はあくまでデバッグ用とかに使うのがいいのかなと思います。
| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑