コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Addressable Asset System の GetDownloadSizeAsync に失敗する現象に遭遇した時のメモ

概要

public static void GetDownloadSizeAsync
( 
    IList<string> key, 
    Action<long>  onSuccess, 
    Action        onFailure = null 
)
{
    void OnComplete( AsyncOperationHandle<long> handle )
    {
        if ( handle.Status != AsyncOperationStatus.Succeeded )
        {
            onFailure?.Invoke();
            return;
        }
        
        onSuccess( handle.Result );
    }
    
    Addressables.GetDownloadSizeAsync( key ).Completed += handle => OnComplete( handle );
}

上記のような GetDownloadSizeAsync のラッパー関数を作って

var list = new[]
{
    "Sprites/f358.png",
};
UniAddressInitializer.GetDownloadSizeAsync( list );

このように使用したらサイズの取得に失敗する(onFailure が呼ばれる)状況に遭遇した

public static void GetDownloadSizeAsync
( 
    IList<object> key, // ★
    Action<long>  onSuccess, 
    Action        onFailure = null 
)

ラッパー関数の引数の key の型を IList から IList に変更したら
正常にサイズを取得できるようになった