6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[UE4] 文字列からアセットを指定してロードする

Last updated at Posted at 2021-06-17

背景

 DLC(ダウンロードコンテンツ)を考慮してコンテンツを作成するようなケースにおいての注意点として、DLCのコンテンツが独立している必要があります。ここで言う[独立している]というのは、アセットのリファレンスがDLCの中で完結している必要があるということです。

具体的な例(初期アプリケーションとDLCの関連性)

 例えば以下は良くあるケースですが、アプリケーションの初期状態とDLCのようにコンテンツが分かれている状態を図示したものです。デバイスはコンソール機でもモバイルデバイスでもよいですが、上の図は最初にアプリケーションをダウンロードした状態で、実行ファイルと初期状態で遊ぶのに必要なコンテンツがchunk0として存在しています。

 DLCのコンテンツは例えば、DLC1にキャラクターA、DLC2にキャラクターBの追加キャラクターがあるとします。テクスチャやマテリアルなどのキャラクターのアセット一式がそれぞれchunk1, chunk2として分けられていて、それぞれ.pakのようにアセットを1まとめにしてDLCとして構成しています。

 DLCを購入してデバイスにインストールした図が下の図です。DLCは購入後にインストールされ、.pakをマウント(アプリケーションの中からアセットを取り出すことができる状態)することで利用可能となります。例えば格闘ゲームの追加キャラクターであれば、DLCをダウンロードしてマウントして初めて利用できるようになるということです。
2021-06-17_02h24_39.png

 このようにまずDLCを利用する際には、それらが必ずしも存在しているとは限らないため、DLC1の中のアセットと本体コンテンツのアセットがリファレンスされる(参照することによって結びついてる)ことを避ける必要があります。同様にDLC1とDLC2のようなDLC同士でもリファレンスを持つことは避けなければなりません。もし、DLC1の中のアセットと本体コンテンツのアセットリファレンスを持っているような場合は、本体コンテンツの.pakに含まれる(DLC1のアセットが想定外の.pakに含まれる)ことになるので注意が必要です。

アセットの呼び出しにおいて

 唐突ですが、この図は「アセットを文字列から参照してロードして対象のActorをスポーンする例」です。このように文字列からアセットを引っ張ってくることでリファレンスすることなく特定のアセットを持ってくることができます。これは例えば、本体コンテンツの中からDLCのアセットをロードしたいようなケースで利用できます。アセットを直接リファレンスすることは避けるべきなので、リファレンスを使用しない方法をこのようなケースでは利用してアクセスするようにしましょう。

Path.png

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?