図鑑には100種類のアイテムを登録したけれど、画面に出すのは選んだ1個だけ。その1個を見るために、まだ選んでいないモデルまで読み込む必要はあるでしょうか。
こうした読み込みを整理するのが ソフト参照 です。アセットの場所を覚えておき、使うことが決まってから読み込みます。さらに 非同期ロード を使えば、完了を待つ間も、ほかのゲーム処理を進められます。
この記事では、近づくと仮の箱が円錐へ変わる、小さな展示物を作ります。まず「後から読み込み、届いた結果で見た目を変える」流れをつかみ、その後で自分のゲームの重いモデルへ応用してみましょう。
この記事でわかること
- ハード参照とソフト参照で、読み込むタイミングがどう変わるか
- Async Load Assetの完了を受け取り、メッシュを差し替える手順
- 読み込み中の重複要求と、失敗した場合の扱い
- 参照関係と、実行中のメモリを分けて調べる方法
アセットの「場所」を覚えておく
参照 は、使いたい相手を指定するためのものです。たとえばStatic Mesh型の変数に円錐のアセットを設定すると、その変数から同じ円錐を指定できます。ここでいうアセットは、メッシュや画像、音など、コンテンツブラウザに保存された素材です。
ハード参照は、読み込みがつながる
Blueprintのメッシュ変数を Object Reference にし、初期値に特定のアセットを保存すると、アセットへの ハード参照 になります。そのBlueprintを読み込むと、必要な参照先も一緒に読み込まれます。
このつながりは、参照先のさらに先へ続くことがあります。展示物のBlueprintがメッシュを使い、メッシュがマテリアルを使い、そのマテリアルがテクスチャを使う、といった関係です。表示候補を全てハード参照で持つと、今は選ばない候補まで読み込む原因になります。

一方、Soft Object Reference(ソフト参照) は、アセットの場所である パス を記録します。たとえば /Game/AsyncDemo/Meshes/SM_AsyncDemo という住所を覚えておき、その参照だけではメッシュを読み込みません。
| 比べる点 | ハード参照 | ソフト参照 |
|---|---|---|
| アセットを保存した側を読み込むと | 参照先も読み込まれる | その参照だけでは参照先を読み込まない |
| アセットを使うとき | 読み込まれた相手を指定する | ロードを要求し、結果を受け取って使う |
| 選ぶ目安 | 最初から使う、待たせたくないもの | 出番が後、または使うか未定のもの |
ソフト参照は、読み込みをなくす仕組みではなく、読み込む時期を選ぶ仕組みです。 別のBlueprintやレベルが同じメッシュをハード参照していれば、そちらから読み込まれることもあります。変数1個をソフト参照にしただけで、必ず未読込になるわけではありません。