【Unity】Addressablesでリモートからデータ取得手順

2024-05-06

以下のコードをサーバーから取得する形に変更します。

[RequireComponent(typeof(Image))]
public class AddressableTest : MonoBehaviour
{
    private Image img;

    void Start()
    {
        img = this.gameObject.GetComponent<Image>();
        LoadAsset("zunmon026");
    }

    private async void LoadAsset(string key)
    {
        AsyncOperationHandle<Sprite> asyncOH = Addressables.LoadAssetAsync<Sprite>(key);
        await asyncOH.Task;
        img.sprite = asyncOH.Result;
        Addressables.Release(asyncOH);
    }
}

とはいっても変えるところはAddressables.Releaseを別にしただけ

(Addressables.LoadAssetAsyncしたものはリリースすると消えたので…)

C#コード上はこちらでいけます。キャッシュ処理は適当

[RequireComponent(typeof(Image))]
public class AddressableTest : MonoBehaviour
{
    private Image img;

    void Start()
    {
        img = this.gameObject.GetComponent<Image>();
        LoadAsset("zunmon026");
    }

    private List<AsyncOperationHandle<Sprite>> cacheList = new List<AsyncOperationHandle<Sprite>>();
    private async void LoadAsset(string key)
    {
        AsyncOperationHandle<Sprite> asyncOH = Addressables.LoadAssetAsync<Sprite>(key);
        await asyncOH.Task;
        img.sprite = asyncOH.Result;
        cacheList.Add(asyncOH);
    }

    public void ReleaseAsset()
    {
        foreach(var cache in cacheList)
        {
            Addressables.Release(cache);
        }
    }
}

ビルド&ロード先変更

Addressables Profilesを開き"Remote.LoadPathを変更する"

例ではGoogleCloudだが取得できればなんでもいい

Addressables Groupsウィンドウを開き、画像ファイルをリモートから取得するようにする

(Default Local Groupは変えたくないので)NewからRemoteGroupを新しく作成し、Addressablesした画像をRemoteGroupにD&Dする

、RemoteGroupを選択する

Content Packing & LoadingのBuild & Load PathsをRemoteに変更

(このグループはビルドとロード先が違いますよという設定)

指定できたらPlyaer Mode Script > UseExistingBuildを選択

Build>NewBuild>DefaultBuildScriptを選択する、ビルドされる

ビルド先のファイルをリモートにアップロードする

(GoogleCloudだったらバケットのルート)

Unityで実行するとロード成功する