Unity Addressables: 检查 Group 存在并创建
可以使用 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 著作权归作者所有。请勿转载和采集!