Unity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込み

この記事では、AssetBundleに基づくAddressablesリソースの読み込みについて紹介します。AddressablesはUnity2018バージョンの後にリリースされます。Addressablesは、ウィンドウ1.>バージョン7.5に達したパッケージマネージャーで直接見つけることができます。
Unity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込み

インストールが完了すると、プロジェクト内のリソースは「アドレス可能」と表示されます。
Unity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込み
インストールが完了したら、「ウィンドウ」->「資産管理」->「アドレス可能」->「グループ」と入力します
Unity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込み

  1. リソースはグループ化できます。入力後の最初の場所はデフォルトのグループグループです
  2. 作成->グループ->パッケージアセットはグループグループを作成できます
  3. プロファイル:独自のリソースパッケージのアドレスを設定し、設定した場所を選択して、プロファイルの管理を入力し、複数のパッケージアドレス(テストサービス、開発サービス、オンラインサービス、VIPサービスなど)をセットアップします。ローカル/リモートパッケージ設定
    は、テストサービス、公式サービス、VIPサービスなど、さまざまな設定を生成できます。
    •ローカルビルドパス-ローカルエンドパッケージパス
    •ローカルロードパス-ローカルエンドロードパス
    •リモートビルドパス-リモートパッケージパス
    •リモートロードパス-リモートロードパスUnity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込み
  4. ツールには、Unity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込みリソース読み込み分析プロファイル、テストサービス、ホスティングサービス、ラベルタグなど、使用するツールが含まれます
  5. プレイモードスクリプトには3つのオプションがあります。最初のオプションは高速で、Unityエディターでテストできます。2番目のオプションはロードのシミュレーション、Unityはリモートロードプロセスのシミュレーション、3番目のビルドロード(必要)、プログラムがパッケージ化されている場合、まずリソースをパッケージ化するために彼を選択する必要がありますUnity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込み
  6. Bulidはパッケージ化されたリソースです

アドレス可能なリソースのパッケージ化プロセス
Unity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込み

非同期で読み込む必要のあるリソースについては、[アドレス指定可能]をオンにして、デフォルトのグループグループまたはユーザーが作成したグループグループに直接ドラッグしてUnity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込み
、リソース名のマーク1の場所を変更します。リソースの
マーク2 の場所を変更して、リソースのラベルを設定できます。
注:フォローアップタグまたは名前でリソースを読み込むことができます。
すべてのリソースを追加したら、リソースをビルド場所にパッケージ化します。リソースのパッケージ化は基本的に完了しています。詳細については、APIドキュメントを開くことができます。

リソースの読み込み方法
上記のリソースがパッケージ化された後、リソースは非同期に読み込まれます

InstantiateAsync()
•非同期インスタンスのインスタンス化
•システムは待機しません
•呼び出しが完了すると、呼び出しは戻って実行されます•大量のインスタンスのインスタンス化はシステムでスタックしません
LoadAssetAsync()
•非同期ロード
•リソースはローカルでも可能ですリモートサーバー上にあることができます

using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

public class Loading : MonoBehaviour
{
    //直接选择拖入目标
    public AssetReference box;

    /// <summary>
    /// 加载
    /// </summary>
    void LoadBox()
    {
        box.LoadAssetAsync<GameObject>().Completed += OnLoaded;
    }

    //加载完成的回调
    void OnLoaded(AsyncOperationHandle<GameObject> obj)
    {
        GameObject cube = obj.Result;
    }
}

名前でロードUnity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込み

using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

public class Loading : MonoBehaviour
{

    /// <summary>
    /// 加载
    /// </summary>
    void LoadBox()
    {
        Addressables.LoadAssetAsync<GameObject>("cube").Completed += OnLoaded;

                //异步加载实例化
        //Addressables.InstantiateAsync("cube");
    }

    //加载完成的回调
    void OnLoaded(AsyncOperationHandle<GameObject> obj)
    {
        GameObject cube = obj.Result;
    }
}

ラベル名でロード(マテリアルマップのロードなどに適しています)
Unity3Dリソースの非同期読み込み(3)-Addressablesリソースの非同期読み込み

  Addressables.LoadAssetsAsync<GameObject>(new List<object> { "key", "label" }, null, Addressables.MergeMode.Intersection).Completed += (AsyncOperationHandle<IList<GameObject>> obj) => {
            GameObject box = ((AsyncOperationHandle<IList<GameObject>>)obj).Result[0];
        };

注:⚠️Resources
フォルダー内のリソースがアドレス可能としてマークされている場合、システムはそれをResourcesフォルダーからResources_movedの新しいフォルダーに自動的に移動します。
•デフォルトの関連付けられた場所は、元の古い道路ルートを指します。
•元の読み込みコードは、Resources.LoadAsync <
GameObject >(“ map / city.prefab”)からAddressables.LoadAssetAsync <GameObject>(“ map / city.prefab”)に変更されます。

旧バージョンの変換:
プロジェクトにアセットバンドルが設定されている場合、初めて[アドレス指定可能]メニューを開くと、すべてを[アドレス指定可能]グループに転送するかどうかを尋ねられます。

  • Addressablesは、Asset Bundlesシステムの拡張に基づいています。AssetBundlesは手動管理、Addressablesは自動管理と考えることができます。
  • Addressablesのみを使用できます。
  • AddressablesとAsset Bundleは混在させることができますが、公式の目標は2つではありません
  • 共存ですが、代わりにAddressablesはすべての関連タスクを目標として処理できます。
  • public GameObject XXXがpublic AssetReference XXXに変更されました;•Instantiate()がAssetRefName.InstantiateAsync();に変更されました。
  • LoadはLoadAssetAsync <GameObject>();を使用します。

まとめ
レガシーAssetbudleとアドレス指定は、後者に使いやすく比較、およびリソースのアップデートもより便利で、ストレージリソースを管理するために、自分自身に対処していません。
アドレス指定可能オブジェクトは、ロードまたはインスタンス化されるだけでなく、オブジェクトの場所を照会できます。•システムは、合理的な相関を処理するのに役立ちます。
ビルドスクリプトを使用すると、独自のパッケージングプロセスを記述できます
。Addressablesは、アセットバンドルアーキテクチャに基づく高レベルのプロセスです。
将来的に対応可能

Addressableには現在、スクリプトのパッケージ化、Aプロジェクトのパッケージ化、Bプロジェクトのロードおよび使用のバグなどをサポートしていないなど、いくつかの問題があります。

おすすめ

転載: blog.51cto.com/myselfdream/2488786