【Unity】2019年Addressable System の使い方【Preview0.8.6版】
はじめに
久々の更新です。2018年12月より請負の仕事をしていますので、少ない開発時間を更新に充てることができないです。かなりの放置PLAY 🙇
ですが、Addressable Systemの使い勝手が変わってしまい困ることがなので調べることにしました。
Addressable System Preview0.8.6です。個人的には、試用レベルではなく実際のゲームにも利用できると思います。上手に利用できれば、バージョンUPを楽にできるようになるといいなー的に調べてみます。
あくまでも個人的な備忘録なので、間違っているかもしれませんが・・・参考になれば幸いです。
インストール方法
PackageManagerからインストールしてください。昔みたいに、\Packages\Manifest.json を修正する必要はありません。(Unity2019.1.3)
はじめてのセットアップ
Window> Asset Management> Addressable Assets を選択すると
初めての場合は、Createをクリックします。
このあたりは、前のバージョンと変わりませんね。
コンテンツの登録
Prefab化したデータを登録します。登録は、Addressableチェックする方法とドロップダウンする方法があります。保存場所を移動しても、自動的に適切に修正されます。コンテンツを入れ替えたり削除する場合は、残念ながら再登録・削除をする必要があります。
アドレスを全部覚えるのは大変です。そんな場合は、短縮名を使うと便利です。
settingです。ラベルを付けると管理しやすいです。
コンテンツを読み込みする
以前より命令が変わりました。
登録したAssetを読み込むためには、LoadAssetAsync InstantiateAsyncを使います。以前のコードも使えますが、警告が出ます。
そうそう 余談ですが、上記でTEXTからAssetを読み込むようにすると楽です。と書いていますが、現在はAddressablesystemのコンテンツカタログで管理対応できそうです。
でコンテンツを読み出すためには、下記のように記述します。
GameObject object00 = null;
//Assetのロード
Addressables.LoadAssetAsync("Object00").Completed += op =>
{
//ロードに成功
Debug.Log("Object00 Load Complete:" + op.Result);
object00 = op.Result;
};
//DL完了待合わせ
do
{
//ロード待ち。ロード不可の場合はずーと抜けない。時間等で切るようにする必要がある。
yield return null;
}while (object00 == null);
//インスタンス化
object00 = (GameObject)Instantiate(object00,new Vector3(0,0,0), Quaternion.identity);
GameObject object01 = null;
//Assetのロード
Addressables.InstantiateAsync("Object01", new Vector3(1, 0, 0), Quaternion.identity).Completed += op =>
{
//ロードに成功
Debug.Log("Object01 Load Complete:" + op.Result);
object01 = op.Result;
};
//DL完了待合わせ
do
{
//ロード待ち。ロード不可の場合はずーと抜けない。時間等で切るようにする必要がある。
yield return null;
} while (object01 == null);
シーンを読み込むためには、ddressables.LoadSceneAsyncを利用します。シーンのアンロードは、Addressables.UnloadSceneです。
さいごに
開発に利用するまでのところまで書きました。いろいろ進化しているのでどのように使ってよいのか?よくわからない機能もあるのですが、調べてみようと思います。
まずは、コンテンツカタログを使ってみようと思います。