Addressable Assets System 対応
投稿日:2019年10月5日 | 最終更新日:2023年3月29日
Unityに「Addressable Assets System」というアセットのロードをより便利に行えるシステムが追加されました。
宴でこのシステムに対応する場合のサンプルを以下にまとめます。
「Addressable Assets System」自体の使い方に関しては、Unity公式のドキュメントなどを確認してください。
基本的には宴側は「Addressable Assets System」を呼び出すだけです。
ロードやアンロードの処理をカスタムするにある手法を使って、AddressableAssetsSystemを呼び出しています。
目次
サンプルスクリプトのダウンロード
以下のアドレスからサンプルスクリプトをダウンロードしてください。
https://madnesslabo.net/UtageSample/UtageForAddressable.unitypackage
使い方
UtageForAddressableCustomFileManager を「Managers > FileManager」にAddComponentします。
UtageForAddressableCustomFileManagerの「RootAddress」には、「Assets/Utage/Sample/Resources_moved/」のようにAddresableのアドレスを取得するためのルートディレクトリを設定します。
Addressableのアドレスと、宴側で指定したパスの関係
画像の例でいうと、
「Assets/Utage/Sample/Resources_moved/」の部分が、UtageForAddressableCustomFileManagerの「RootAddress」
「Sample」の部分は「AdvEngineStarter」の「Root Resource Dir」で指定
「Texture/BG」の部分は、素材の種類によって宴の内部で固定されているディレクトリ名
「TutorialBg1.png」などは、Textureシートなどのエクセル側で指定するファイルパスです。
UtageForAddressableCustomFile.cs の GetAddressではこれらを合成して、Addressableで設定した「アドレス」を取得できるようにしています。
また、エクセル側で指定するファイルパスの拡張子が不正確な場合はロードエラーになりますので、その点も注意してください。
これらの対応が正しくなるように、Addressableのアドレスと「RootAddress」を設定してください。
AdvEngingeStarterの差し替え
宴のデフォルトのAdvEngingeStarterは、ファイルをローカルからロードするのか、リモートからロードするのかなど細かい設定が可能です。
ですがAddressableを使う場合、これらの設定は殆ど全てAddressable側で行うことになるため、むしろ意図しない不具合を起こしかねません。
そのため、AdvEngingeStarterをもっと単純な形にしたUtageForAddressableAdvEngineStarterを作成しました。
ただし、これに伴いテンプレートにあるLoadWait(UI画面でロード待ちをする画面など)が使えなくなってしまいます。
とはいえ、Addressableを使う場合は、ダウンロードの管理などは宴以外で行うことがほとんどだと思いますので、必要に応じて自作してください。
任意のチャプターのみロードし、最小限のリソースだけダウンロード
任意のチャプターのみロードし、最小限のリソースだけダウンロードという処理のAddresable対応のサンプルとして、
UtageForAddressableChapterLoad.csを追加してあります。
あくまでサンプルなので、実際にはファイルサイズのUI表示への反映などが必要になるかと思います。各プロジェクトの状況に応じて各自でプログラムして拡張してください。
Unity側の未対応機能
AddressableAssetSystemはAndroidでのVideoClip再生に対応していないようです。
詳細と対策はこちら