検証環境
- Unity 2019.4.25f1
- Addressables 1.18.4
- Localization 1.0.0-pre.9
ビルドとキャッシュ
- アプリをビルドすると、StreamingAssets 配下に
catalog.jsonと settings.json が生成される (
)
- settings.json にはリモートの
catalog.hashの取得先(URL)が記載されている
(
) - アプリ起動後、Addressables を操作するとリモートから
catalog.hash/catalog.jsonを取得してキャッシュする - キャッシュは
Application.persistentDataPath/com.unity.addressables配下
- settings.json にはリモートの
catalog.hash
catalog.hashは Addressables のビルド結果に変更があるかどうかのチェックに使われる
crc
- RemoteBuild / LocalBuild 共通
var str = "m_KeyDataStringの値";
Console.Write(Encoding.UTF8.GetString(Convert.FromBase64String(str)));

RemoteBuild のアセットの場合
- ダウンロードする bundle ファイルと crc が一致するかチェックする
LocalBuild のアセットの場合
- StreamingAssets 配下に
catalog.jsonと一緒に bundle ファイルも配置されている - crc のチェックはサーバーから取得した
catalog.jsonを使ってそう catalog.jsonが更新されても StreaminAssets 配下の bundle は更新されてないので、hash が名前に入っているとファイル名が変わって bundle ファイルが見つからずにエラーになる(RemoteProviderException)
Localization などの hash が名前に入っていない bundle ファイルは、ファイルは見つかるが crc ミスマッチが起きる

crc ミスマッチが起きた場合、更新するにはアプリをビルドして StreamingAssets 自体の更新が必要
- StreamingAssets 配下に
マルチプラットフォームでの作業
- 単一のプラットフォームで作業している場合、アセットに変更(アセットの内容、生成時刻など)がなければ crc は変わらない
- マルチプラットフォームで作業している場合、スイッチするとアセットに変更が加わる(プラットフォーム切り替え時間の短縮【Unity】 - (:3[kanのメモ帳])
参考リンク
- Addressable Assets Systemをちゃんと導入するための技術検証まとめ – てっくぼっと!
- 【Unity】Addressable Asset System 公式マニュアルの和訳 Part4 | ドクロモエ
- Addressable Asset System がワケ分からないのでわからなかった点を調査する - netsis
- 【Unity】【Addressable】リモートコンテンツカタログによるダウンロードとロードの仕組み - LIGHT11
- 【Unity】Addressable Asset Systemを色々調査してみた | 紅笑ゲームス
- sassembla.github.io/Public/2018:09:02 10-17-07/2018:09:02 10-17-07.html
- sassembla.github.io/Public/2017:02:10 13-56-21/2017:02:10 13-56-21.html