概要
最近は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フォルダ内にある
・BuildScriptPlayAssetDelivery
をBuild and Play Mode Scripts
の+を押して追加
・Asset Pack Content
をAsset Group Templates
の+を押して追加
・PlayAssetDeliveryInitializationSettings
をInitialization Objects
の+を押して追加
これをすると、AddressableのBuild->New BuildにPlay 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の内部テスト等で実機デバッグして色々試してみてください。