🐹

【Unity】Addressableを使用しているAndroid向けビルドにPlayAssetDeliveryを導入する。

2022/04/05に公開

概要

最近はWeb開発(Nuxt.js)メインで仕事をしています、中村と申します。

UnityでiOSとAndroid両対応のアプリを短期で作らないといけない機会があったのですが、
AddressableとPlayAssetDelivery(以下PAD)の連携についてあまり参考記事がなかったので書いていきます。

開発環境

macOS Monterey バージョン12.3
Unity 2020.3.27f1
Addressable 1.18.19

UnityのAndroid向け出力の罠

GooglePlayConsoleには150mbのアップロード制限があり、
アプリ本体と画像などのアセットを分割してPADを使用する必要があります。

ここで僕は
「.aabの容量を150mb以下に抑えないといけないんか...せや!
RemoteLoadPathにCDNのURLをいれてAssetBundleロードしてくればいいやん!」

と思ったのですが、これが罠でした。

通常であればこの方法を取る場合、AddressableのLoadPath等設定をRemote用にしなくてはいけません。

ですが、
Googleが用意してくれたPADなるシステムは、
そこにアップしたAssetPack(AssetBundle等を詰めたダウンロード用のデータパック)を
デバイスに任意のタイミングでダウンロードしてくれます。

このAssetPack内のAssetBundleをAddressableで読むにはどうやらLoadPathはLocalのままで良いんですね。
(Unity公式のAddressableサンプルのPADの説明で注意してくださいってありますね...)

また、Unityでビルドしたaabが150mb以上であっても、
展開して確認できるアプリ本体が150mb以下であればアップロードできます。

理解すれば簡単かもしれませんが、Unity初心者の僕はこのあたりで
ちんぷんかんぷんになり、時間を溶かしてしまいました。

解決策

AddressableのAssetBundleの通常ビルドをPAD用ビルドに変更することで解決します。

PAD用のビルドスクリプトの追加

AddressableのBuild->New BuildではデフォルトではDefault Build Scriptしかありません。
PAD用のビルドを追加するために以下の手順を踏みます。

①.Unity公式のAddressableサンプル内AssetsにあるPlayAssetDeliveryフォルダを
ダウンロードをします。

②.①で取得したフォルダを丸ごとプロジェクトに放り込みます。

③.プロジェクトのAddressableAssetSettingsをインスペクタで固定して、
先ほど放り込んだPlayAssetDeliveryフォルダのDataフォルダ内にある
BuildScriptPlayAssetDeliveryBuild and Play Mode Scriptsの+を押して追加
Asset Pack ContentAsset Group Templatesの+を押して追加
PlayAssetDeliveryInitializationSettingsInitialization Objectsの+を押して追加

これをすると、AddressableのBuild->New BuildPlay Asset Deliveryが追加されているはずです。

Addressable Groupsの設定

ビルドを実行する前に、プロジェクトのAddressableAssetGroupにPAD用のスキーマを設定しておきましょう。

Window -> Asset Management -> Addressables -> Groupsで表示される
グループ群のインスペクタにあるAdd Schemaボタンを押して、Play Asset Deliveryスキーマを追加します。

AssetPackのダウンロード形式の設定は InstallTimeContent(InstallTime) がデフォルトですが、
既存のAddressableの読み込み設計を変えたくない場合はいじらなくてもいいと思います。
(InstallTime以外は別途読み込みのロジックを書く必要あり)

ついでに、Content Packing & Loading -> Advanced Options -> Asset Bundle Provider
AssetBundle ProviderからPlay Asset Delivery Providerに変更するのを忘れないでください。

ビルドの実行

これらを設定できたら、AddressableからBuild-> New Build -> Play Asset Deliveryから
AssetPackをビルドしておきましょう。
ここからはいつものような感覚で使ってもらえばいいと思います。

さいごに

aabをビルドして、150mbを超えていてもGooglePlayConsoleにアップできると思います。

これでPAD AssetPackとAddressableを併用する準備ができたので、
展開して、アプリ本体の容量確認して150mb以下になるように調整したり、OnDemandで必要な時にダウンロードしたりなんやかんや。

InstallTime以外のダウンロード形式だとそれ用のGoogle公式パッケージが必要なのですが、
その辺は今回のプロジェクトでは使わなかったので書いていません。

あとはPlay Consoleの内部テスト等で実機デバッグして色々試してみてください。

Discussion