コガネブログ

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

【Unity】Addressable Asset System でダウンロード対象のアセットバンドルの容量を取得する方法

概要

var handle = Addressables.GetDownloadSizeAsync( address );
handle.Completed += _ => Debug.Log( handle.Result );
  • Addressables.GetDownloadSizeAsync を使用することで
    ダウンロード対象のアセットバンドルの容量を取得できる
  • ダウンロード対象のアセットバンドルが既にキャッシュに存在する場合は 0 が返ってくる
  • Load Path が LocalLoadPath の場合は容量が常に 0 になる
    • 正確には Load Path の文字列が http で始まらない場合は常に 0 になる
      • AssetBundleProvider.cs 93 行目の
        ResourceManagerConfig.IsPathRemote のチェックで弾かれる
var addresses = new[]
{
    "AAAAA",
    "BBBBB",
    "CCCCC",
};
var handle = Addressables.GetDownloadSizeAsync( addresses );
handle.Completed += _ => Debug.Log( handle.Result );
  • 配列やリストで複数のアドレスを指定することもできる
  • キャッシュに存在しないアセットバンドルの容量の合計を取得できる
  • サーバに接続せずに容量を取得できる
    • サーバからアセットバンドルを削除しても正常に容量を取得できる