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と連携するとより使いやすい ● ※運用に関する実例はまだまだ不足している