51 lines
1.7 KiB
C#
51 lines
1.7 KiB
C#
using System.Collections;
|
|
using Cysharp.Threading.Tasks;
|
|
using AlicizaX.Resource.Runtime;
|
|
using AlicizaX;
|
|
using UnityEngine;
|
|
using YooAsset;
|
|
|
|
namespace Unity.Startup.Procedure
|
|
{
|
|
internal sealed class ProcedureDownloadWebFiles : StateBase<UpdateProcedureState>
|
|
{
|
|
protected override void OnEnter()
|
|
{
|
|
// GameApp.Event.Fire(this, AssetPatchStatesChangeEventArgs.Create(EPatchStates.DownloadWebFiles));
|
|
BeginDownload().Forget();
|
|
}
|
|
|
|
|
|
private async UniTaskVoid BeginDownload()
|
|
{
|
|
var downloader = StartupSetting.Downloader;
|
|
|
|
|
|
// 注册下载回调
|
|
void DownloaderOnDownloadErrorCallback(DownloadErrorData data)
|
|
{
|
|
Log.Error($"PackagegName:{data.PackageName} FileName:{data.FileName} Error:{data.ErrorInfo}");
|
|
SwitchState(UpdateProcedureState.ProcedureCreateDownloader);
|
|
}
|
|
|
|
downloader.DownloadErrorCallback = DownloaderOnDownloadErrorCallback;
|
|
downloader.DownloadUpdateCallback = OnDownloadProgressCallback;
|
|
downloader.BeginDownload();
|
|
await downloader;
|
|
|
|
// 检测下载结果
|
|
if (downloader.Status != EOperationStatus.Succeed)
|
|
{
|
|
Log.Error("资源更新失败!");
|
|
return;
|
|
}
|
|
SwitchState(UpdateProcedureState.ProcedurePatchDone);
|
|
}
|
|
|
|
private void OnDownloadProgressCallback(DownloadUpdateData data)
|
|
{
|
|
GameApp.Event.Fire(this, AssetDownloadProgressUpdateEventArgs.Create(data.PackageName, data.TotalDownloadCount, data.CurrentDownloadCount, data.TotalDownloadBytes, data.CurrentDownloadBytes));
|
|
}
|
|
}
|
|
}
|