個人開発でも使ってみよう Addressable Asset System
by
Sugaya
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
個人開発でも使ってみよう Addressable Asset System Gotanda.unity #18
Slide 2
Slide 2 text
プロフィール tetsu(鉄、Twitter:@tetsujp84) ● Unityエンジニア ● 株式会社ミラティブ所属 ● サークルでリズムゲームを制作中
Slide 3
Slide 3 text
制作中のゲーム Liminality ● スマートフォン向けリズムゲーム ● Addressable Asset System に移行した ● CRI ADX2 を使っている
Slide 4
Slide 4 text
Addressable Asset Systemを使うメリット ● Resources からの脱却 ● 追加ダウンロードの仕組みを簡単に整えられる ● グループによりバンドル管理がしやすい ● ビルドインと追加ダウンロードのリソースを区別せずに使える ○ ビルドイン:アプリ本体に最初から含める内部リソース ○ 追加ダウンロード:アプリ起動中にダウンロードを行う外部リソース ● ビルドインから追加リソースに切り替えられる
Slide 5
Slide 5 text
リズムゲームでアセットとして使うもの ● ジャケット:.png ● 音源:.acb ● 譜面:.json ひとまとめにして1曲単位でグループ化
Slide 6
Slide 6 text
ロード方法 LoadResourceLocationAsync でファイルの存在チェック Addressable.LoadAssetAsync でロードして Instantiate でインスタンス化 ※UniTaskを使用
Slide 7
Slide 7 text
ビルドインと追加ダウンロードの切り替え ● ビルドインのリソース ○ Asset Group を Local にする ○ アプリをビルドする際に一緒にビルドする ● 追加ダウンロードのリソース ○ Asset Group を Remote にする ○ アプリのビルドとは別でビルドする ● LoadAssetAsync はダウンロードも同時に行ってくれる
Slide 8
Slide 8 text
具体例 ビルドインの設定 Build and Load Paths を Local に設定する 追加ダウンロードの設定 Build and Load Paths を Remote に設定する
Slide 9
Slide 9 text
CRI ADX2 との連携 ● CRI ADX2 ○ サウンドミドルウェア ○ Androidの低遅延再生に強い ○ 商業リズムゲームでよく使われる ● 通常の CRI ADX2 のロード ○ StreamingAssets か persistentDataPath に置いてロード ○ ダウンロード機構を自分で作る必要がある ● Addressable Asset System に載せるメリット ○ 他のリソースと同様に扱える ○ 独自ダウンロード機能を作らずに済む
Slide 10
Slide 10 text
CRI ADX2 との連携の注意点 ● 音源ファイルの拡張子は .bytes にして TextAsset として読み込む ○ 独自拡張子(.acb)はUnityのファイルとして扱われない ● ロード時は byte[] を引数に持つメソッドを利用する ● StreamingAssetsフォルダには入れない
Slide 11
Slide 11 text
音源ファイルの読み込み AddCueSheet(string name, byte[] acbData, string awbFile, CriFsBinder awbBinder = null) 音源ファイル(M0001)を TextAsset として読み込む CriAtom.AddCueSheetには .bytes を渡す
Slide 12
Slide 12 text
AssetImporterで拡張子変更 アセット追加時に音源ファイルの拡張子を .bytes に変える
Slide 13
Slide 13 text
CIとの連携 ● Unity Cloud Build の活用 ○ アプリ/リソースの更新は全てUnity Cloud Buildで運用 ● ビルドインのリソースも都度ビルドが必要 ○ アプリビルドだけでは自動では更新されない ○ 同時にリソースのビルドを行うようにした ○ OnPreprocessBuild ではなく PreBuildMethod のタイミングでビルド ● 開発版だけに含めたいリソースは IncludeInBuild で制御
Slide 14
Slide 14 text
Unity Cloud Build でのリソースビルド ● 追加ダウンロードのリソースは Unity Cloud Build の設定からビルドが行える ● リソースだけのビルドも可能 ● ※ビルドインのリソースは更新されない
Slide 15
Slide 15 text
ビルドインリソース更新用のメソッド AddressableAssetSettings.BuildPlayerContent スクリプト経由でビルドする ※ActivePlayerDataBuilderIndexの設定が必要かは検証中
Slide 16
Slide 16 text
Unity Cloud Buildでの設定 PreBuildMethod(エクスポート前メソッド)で更新用メソッドを指定する
Slide 17
Slide 17 text
開発版のみに含めるリソースの管理 開発版用のグループ(Development)を用意しておく ビルド実行時に IncludeInBuild を切り替えてビルドに含めるかを管理する
Slide 18
Slide 18 text
Addressable Asset Systemを導入してみて ● Addressable Asset System は個人開発レベルでも導入できる ● リソース追加があるプロジェクトなら特に有効 ● CRI ADX2と一緒に使える ● CIと連携するとより使いやすい ● ※運用に関する実例はまだまだ不足している