Upgrade to Pro — share decks privately, control downloads, hide ads and more …

個人開発でも使ってみよう Addressable Asset System

Sugaya
December 05, 2022

個人開発でも使ってみよう Addressable Asset System

Sugaya

December 05, 2022
Tweet

More Decks by Sugaya

Other Decks in Programming

Transcript

  1. 個人開発でも使ってみよう Addressable Asset System Gotanda.unity #18

  2. プロフィール tetsu(鉄、Twitter:@tetsujp84) • Unityエンジニア • 株式会社ミラティブ所属 • サークルでリズムゲームを制作中

  3. 制作中のゲーム Liminality • スマートフォン向けリズムゲーム • Addressable Asset System に移行した • CRI

    ADX2 を使っている
  4. Addressable Asset Systemを使うメリット • Resources からの脱却 • 追加ダウンロードの仕組みを簡単に整えられる • グループによりバンドル管理がしやすい

    • ビルドインと追加ダウンロードのリソースを区別せずに使える ◦ ビルドイン:アプリ本体に最初から含める内部リソース ◦ 追加ダウンロード:アプリ起動中にダウンロードを行う外部リソース • ビルドインから追加リソースに切り替えられる
  5. リズムゲームでアセットとして使うもの • ジャケット:.png • 音源:.acb • 譜面:.json ひとまとめにして1曲単位でグループ化

  6. ロード方法 LoadResourceLocationAsync でファイルの存在チェック Addressable.LoadAssetAsync でロードして Instantiate でインスタンス化 ※UniTaskを使用

  7. ビルドインと追加ダウンロードの切り替え • ビルドインのリソース ◦ Asset Group を Local にする ◦

    アプリをビルドする際に一緒にビルドする • 追加ダウンロードのリソース ◦ Asset Group を Remote にする ◦ アプリのビルドとは別でビルドする • LoadAssetAsync はダウンロードも同時に行ってくれる
  8. 具体例 ビルドインの設定 Build and Load Paths を Local に設定する 追加ダウンロードの設定

    Build and Load Paths を Remote に設定する
  9. CRI ADX2 との連携 • CRI ADX2 ◦ サウンドミドルウェア ◦ Androidの低遅延再生に強い

    ◦ 商業リズムゲームでよく使われる • 通常の CRI ADX2 のロード ◦ StreamingAssets か persistentDataPath に置いてロード ◦ ダウンロード機構を自分で作る必要がある • Addressable Asset System に載せるメリット ◦ 他のリソースと同様に扱える ◦ 独自ダウンロード機能を作らずに済む
  10. CRI ADX2 との連携の注意点 • 音源ファイルの拡張子は .bytes にして TextAsset として読み込む ◦

    独自拡張子(.acb)はUnityのファイルとして扱われない • ロード時は byte[] を引数に持つメソッドを利用する • StreamingAssetsフォルダには入れない  
  11. 音源ファイルの読み込み AddCueSheet(string name, byte[] acbData, string awbFile, CriFsBinder awbBinder =

    null) 音源ファイル(M0001)を TextAsset として読み込む CriAtom.AddCueSheetには .bytes を渡す
  12. AssetImporterで拡張子変更 アセット追加時に音源ファイルの拡張子を .bytes に変える

  13. CIとの連携 • Unity Cloud Build の活用 ◦ アプリ/リソースの更新は全てUnity Cloud Buildで運用

    • ビルドインのリソースも都度ビルドが必要 ◦ アプリビルドだけでは自動では更新されない ◦ 同時にリソースのビルドを行うようにした ◦ OnPreprocessBuild ではなく PreBuildMethod のタイミングでビルド • 開発版だけに含めたいリソースは IncludeInBuild で制御
  14. Unity Cloud Build でのリソースビルド • 追加ダウンロードのリソースは Unity Cloud Build の設定からビルドが行える

    • リソースだけのビルドも可能 • ※ビルドインのリソースは更新されない
  15. ビルドインリソース更新用のメソッド AddressableAssetSettings.BuildPlayerContent スクリプト経由でビルドする ※ActivePlayerDataBuilderIndexの設定が必要かは検証中

  16. Unity Cloud Buildでの設定 PreBuildMethod(エクスポート前メソッド)で更新用メソッドを指定する

  17. 開発版のみに含めるリソースの管理 開発版用のグループ(Development)を用意しておく ビルド実行時に IncludeInBuild を切り替えてビルドに含めるかを管理する

  18. Addressable Asset Systemを導入してみて • Addressable Asset System は個人開発レベルでも導入できる • リソース追加があるプロジェクトなら特に有効

    • CRI ADX2と一緒に使える • CIと連携するとより使いやすい • ※運用に関する実例はまだまだ不足している