可以使用 Addressables.LoadResourceLocationsAsync 方法来判断一个 group 是否存在。如果 group 存在,该方法将返回一个包含 group 中资源的 LocationInfo 列表;如果 group 不存在,该方法将返回一个空的列表。

以下是一个示例代码,演示如何判断一个 group 是否存在,如果不存在则创建它:

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

public class GroupExistenceChecker : MonoBehaviour
{
    [SerializeField] private string groupToCheck = "MyGroup";

    private void Start()
    {
        CheckGroupExistence();
    }

    private async void CheckGroupExistence()
    {
        AsyncOperationHandle<IList<IResourceLocation>> locationsHandle = Addressables.LoadResourceLocationsAsync(groupToCheck);
        await locationsHandle.Task;

        if (locationsHandle.Result.Count == 0)
        {
            Debug.Log("Group does not exist. Creating group...");

            // Create the group
            Addressables.CreateGroup(groupToCheck, false, false, false, null);
        }
        else
        {
            Debug.Log("Group exists");
        }
    }
}

在上述代码中,我们首先使用 Addressables.LoadResourceLocationsAsync 方法来加载 groupToCheck 中的资源位置信息。然后,我们使用 await 关键字等待异步操作的完成。

一旦异步操作完成,我们就可以通过 locationsHandle.Result.Count 属性来判断 group 是否存在。如果列表为空,表示 group 不存在,我们可以调用 Addressables.CreateGroup 方法来创建它。

注意:上述代码中的 Addressables.CreateGroup 方法将在下一帧中执行,因为它是一个异步操作。所以如果需要在创建 group 后立即执行其他操作,可能需要添加额外的逻辑来等待创建操作完成。


原文地址: https://www.cveoy.top/t/topic/o2Tx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录