设置
主要把使用的核心写出来了,如果需要详细的讲解可以去官方api去看
1.全局设置
2.group设置
这个是使用远程更新的组
3.调试设置
4.profile设置
确定这里使用的profile
代码
catalog更新代码
private IEnumerator CheckCatalog()
{
yield return Addressables.InitializeAsync();
var checkHandle = Addressables.CheckForCatalogUpdates(false);
yield return checkHandle;
if (checkHandle.Status == AsyncOperationStatus.Succeeded)
{
if (checkHandle.Result.Count > 0)
{
Debug.Log($"Catalog发现{checkHandle.Result.Count}个更新内容");
isUpdating = true;
updateHandle = Addressables.UpdateCatalogs(checkHandle.Result, false);
yield return updateHandle;
foreach (var item in updateHandle.Result)
{
foreach (var key in item.Keys)
{
if (key is string)
{
if (!keysAsset.keys.Any(x => x == key.ToString()))
keysAsset.keys.Add(key.ToString());
}
}
}
isUpdating = false;
Debug.Log("Catalog更新完成");
Addressables.Release(updateHandle);
}
else
{
Debug.Log("Catalog无更新内容");
}
}
else
{
Debug.Log("Catalog连接服务器失败");
}
Addressables.Release(checkHandle);
}
下载代码
private IEnumerator Download()
{
if (keysAsset.keys == null || keysAsset.keys.Count == 0) yield return null;
var downloadSizeHandle = Addressables.GetDownloadSizeAsync(keysAsset.keys);
yield return downloadSizeHandle;
if (downloadSizeHandle.Result > 0)
{
float totalSizeMb = downloadSizeHandle.Result / byte2mbRate;
Debug.Log("发现更新,进行下载");
Debug.Log($"共有{totalSizeMb}MB");
downloadHandle = Addressables.DownloadDependenciesAsync(keysAsset.keys, Addressables.MergeMode.Union, false);
isDownloading = true;
yield return downloadHandle;
isDownloading = false;
Debug.Log("下载完成");
Addressables.Release(downloadHandle);
keysAsset.keys.Clear();
}
else
{
Debug.Log("无下载内容");
keysAsset.keys.Clear();
}
Addressables.Release(downloadSizeHandle);
}
核心代码
//初始化
Addressables.InitializeAsync()
//检查更新
Addressables.CheckForCatalogUpdates
//更新catalog
Addressables.UpdateCatalogs
//获取下载大小
Addressables.GetDownloadSizeAsync
//下载
Addressables.DownloadDependenciesAsync