UnityのAddressable Assets System(アドレッサブル)は、アセットを動的にロード・管理できる仕組みです。
特に、複数のプラットフォームやサイズの大きなゲームでのメモリ管理とロード時間の改善に役立ちます。
ここでは、基本的な使い方、実践例、メリット、注意点について解説します。
Addressableの使い方の基本
-
Addressableのインストール
- Unityの「Package Manager」から「Addressables」パッケージをインストールします。
-
アセットの設定
- アセットをAddressable化するには、インスペクターで「Addressable」のチェックをオンにし、アセットに一意の名前(Address)を付けます。このAddressを使って後でアクセスできます。
-
Addressable Groupsの作成
- 「Window > Asset Management > Addressables > Groups」から「Addressables Groups」ウィンドウを開きます。ここで、アセットをグループごとに整理します。
- グループごとにビルド設定(メモリ内に保持するか、圧縮するか、外部に保持するかなど)を細かく設定できます。
-
アセットのロードとアンロード
Addressables.LoadAssetAsync<T>("Address")を使ってアセットを非同期でロードします。- ロードしたアセットを使い終わったら
Addressables.Release(asset)でメモリから解放します。
Addressableの実践例
シンプルなアセットの読み込み例
using UnityEngine;
using UnityEngine.AddressableAssets;
public class AddressableExample : MonoBehaviour
{
public string assetAddress; // インスペクターで設定できるアセットのアドレス
private GameObject loadedObject;
public void LoadAsset()
{
Addressables.LoadAssetAsync<GameObject>(assetAddress).Completed += handle =>
{
if (handle.Status == UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationStatus.Succeeded)
{
loadedObject = handle.Result;
Instantiate(loadedObject);
}
else
{
Debug.LogError("アセットのロードに失敗しました");
}
};
}
public void UnloadAsset()
{
if (loadedObject != null)
{
Addressables.Release(loadedObject);
loadedObject = null;
}
}
}