【m】框架优化

This commit is contained in:
zhangzheng
2026-01-07 18:20:13 +08:00
parent 8ef57d9079
commit cd1207a99a
48 changed files with 2624 additions and 1453 deletions

View File

@@ -1,186 +1,186 @@
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.Assertions;
using YooAsset;
namespace Stary.Evo
{
public class ArtResEditorSimulateState : AbstractFSMIStateAsync
{
public ArtResEditorSimulateState(IFsmSystemAsync system) : base(system)
{
}
public override async UniTask OnEnterAsync()
{
Debug.Log("UnityEvo:开始资源更新...");
// //初始化读取资源配置表
var package = YooAssets.GetPackage(AppConfig.PackageDomainName);
// 请求资源版本
var requetVersionOp = package.RequestPackageVersionAsync();
await requetVersionOp;
string packageVersion = "";
if (requetVersionOp.Status == EOperationStatus.Succeed)
{
//更新成功
packageVersion = requetVersionOp.PackageVersion;
PlayerPrefs.SetString($"{AppConfig.PackageDomainName}_GAME_VERSION", packageVersion);
Debug.Log($"UnityEvo:获取资源版本 Version : 【{packageVersion}】");
Debug.Log($"UnityEvo:开始加载服务器资源...");
}
else
{
Debug.LogError($"UnityEvo:获取资源版本失败: 【{requetVersionOp.Error}】");
FsmSystem.SetCurState(nameof(ResUpdateLocalState));
return;
}
// 更新资源清单
var updateManifestOp = package.UpdatePackageManifestAsync(packageVersion);
await updateManifestOp;
if (updateManifestOp.Status == EOperationStatus.Succeed)
{
//更新成功
Debug.Log($"UnityEvo:更新资源清单 updateManifest : 【成功】");
}
else
{
//更新失败
Debug.LogError($"UnityEvo:更新资源清单失败: 【{updateManifestOp.Error}】");
}
//4.下载补丁包
await Download();
//加载热更配置文件
var loadArtSceneDataOp = package.LoadAssetAsync<ArtSceneData>("Config_ArtSceneData");
await loadArtSceneDataOp;
ArtSceneData artSceneData = null;
if (loadArtSceneDataOp.Status == EOperationStatus.Succeed)
{
//更新成功
Debug.Log($"UnityEvo:加载热更配置文件 ArtSceneData : 【成功】");
artSceneData = loadArtSceneDataOp.AssetObject as ArtSceneData;
}
else
{
Debug.LogError($"UnityEvo:加载热更配置文件 ArtSceneData : 【失败】");
}
if (artSceneData == null)
{
Debug.LogError($"UnityEvo:【{package.PackageName}】加载ArtSceneData为空无法继续执行后续流程请检查");
}
}
public override UniTask OnEnterAsync<T>(T param)
{
return UniTask.CompletedTask;
}
public override UniTask OnEnterAsync<T1, T2>(T1 param1, T2 param2)
{
return UniTask.CompletedTask;
}
public override void OnUpdate()
{
base.OnUpdate();
}
public override async UniTask OnExitAsync()
{
await ((FsmLoadSystem)FsmSystem).ForceUnloadAllAssets(AppConfig.PackageDomainName);
AppConfig.PackageDomainName = "";
}
#region
public async UniTask Download()
{
int downloadingMaxNum = 10;
int failedTryAgain = 3;
var package = YooAssets.GetPackage(AppConfig.PackageDomainName);
var downloader = package.CreateResourceDownloader(downloadingMaxNum, failedTryAgain);
//没有需要下载的资源
if (downloader.TotalDownloadCount == 0)
{
Debug.Log("UnityEvo:没有需要下载的资源,跳过更新");
return;
}
//需要下载的文件总数和总大小
int totalDownloadCount = downloader.TotalDownloadCount;
long totalDownloadBytes = downloader.TotalDownloadBytes;
Debug.Log($"UnityEvo:需要下载的资源的个数【{totalDownloadCount}】,需要下载的资源的总大小{totalDownloadBytes / 1024} MB");
//===================================适应新版本YooAsset插件的修改===================================
//注册回调方法
downloader.DownloadErrorCallback = OnDownloadErrorFunction;
downloader.DownloadUpdateCallback = OnDownloadProgressUpdateFunction;
downloader.DownloadFinishCallback = OnDownloadOverFunction;
downloader.DownloadFileBeginCallback = OnStartDownloadFileFunction;
//===================================适应新版本YooAsset插件的修改===================================
//开启下载
downloader.BeginDownload();
await downloader;
//检测下载结果
if (downloader.Status == EOperationStatus.Succeed)
{
//下载成功
Debug.Log("UnityEvo:资源更新完成");
}
else
{
//下载失败
Debug.Log("UnityEvo:资源更新失败");
}
}
//===================================适应新版本YooAsset插件的修改===================================
/// <summary>
/// 开始下载
/// </summary>
private void OnStartDownloadFileFunction(DownloadFileData downloadFileData)
{
Debug.Log(
$"UnityEvo:开始下载:文件名:{downloadFileData.FileName},文件大小:{downloadFileData.FileSize / 1024f / 1024f} MB");
}
/// <summary>
/// 下载完成
/// </summary>
private void OnDownloadOverFunction(DownloaderFinishData downloaderFinishData)
{
Debug.Log("UnityEvo:下载" + (downloaderFinishData.Succeed ? "成功" : "失败"));
}
/// <summary>
/// 更新中
/// </summary>
private void OnDownloadProgressUpdateFunction(DownloadUpdateData downloadUpdateData)
{
Debug.Log(
$"UnityEvo:文件总数:{downloadUpdateData.TotalDownloadCount},已下载文件数:{downloadUpdateData.CurrentDownloadCount},下载总大小:{downloadUpdateData.TotalDownloadBytes / 1024f / 1024f} MB已下载大小{downloadUpdateData.CurrentDownloadBytes / 1024f / 1024f} MB");
}
/// <summary>
/// 下载出错
/// </summary>
/// <param name="errorData"></param>
private void OnDownloadErrorFunction(DownloadErrorData errorData)
{
Debug.Log($"UnityEvo:下载出错:包名:{errorData.PackageName} 文件名:{errorData.FileName},错误信息:{errorData.ErrorInfo}");
}
//===================================适应新版本YooAsset插件的修改===================================
#endregion
}
}
// using Cysharp.Threading.Tasks;
// using UnityEngine;
// using UnityEngine.Assertions;
// using YooAsset;
//
// namespace Stary.Evo
// {
// public class ArtResEditorSimulateState : AbstractFSMIStateAsync
// {
// public ArtResEditorSimulateState(IFsmSystemAsync system) : base(system)
// {
// }
//
// public override async UniTask OnEnterAsync()
// {
// Debug.Log("UnityEvo:开始资源更新...");
//
//
// // //初始化读取资源配置表
// var package = YooAssets.GetPackage(AppConfig.PackageDomainName);
// // 请求资源版本
// var requetVersionOp = package.RequestPackageVersionAsync();
// await requetVersionOp;
// string packageVersion = "";
// if (requetVersionOp.Status == EOperationStatus.Succeed)
// {
// //更新成功
// packageVersion = requetVersionOp.PackageVersion;
// PlayerPrefs.SetString($"{AppConfig.PackageDomainName}_GAME_VERSION", packageVersion);
// Debug.Log($"UnityEvo:获取资源版本 Version : 【{packageVersion}】");
// Debug.Log($"UnityEvo:开始加载服务器资源...");
// }
// else
// {
// Debug.LogError($"UnityEvo:获取资源版本失败: 【{requetVersionOp.Error}】");
// FsmSystem.SetCurState(nameof(ResUpdateLocalState));
// return;
// }
//
// // 更新资源清单
// var updateManifestOp = package.UpdatePackageManifestAsync(packageVersion);
// await updateManifestOp;
// if (updateManifestOp.Status == EOperationStatus.Succeed)
// {
// //更新成功
// Debug.Log($"UnityEvo:更新资源清单 updateManifest : 【成功】");
// }
// else
// {
// //更新失败
// Debug.LogError($"UnityEvo:更新资源清单失败: 【{updateManifestOp.Error}】");
// }
//
// //4.下载补丁包
// await Download();
//
//
// //加载热更配置文件
// var loadArtSceneDataOp = package.LoadAssetAsync<ArtSceneData>("Config_ArtSceneData");
// await loadArtSceneDataOp;
// ArtSceneData artSceneData = null;
// if (loadArtSceneDataOp.Status == EOperationStatus.Succeed)
// {
// //更新成功
// Debug.Log($"UnityEvo:加载热更配置文件 ArtSceneData : 【成功】");
// artSceneData = loadArtSceneDataOp.AssetObject as ArtSceneData;
// }
// else
// {
// Debug.LogError($"UnityEvo:加载热更配置文件 ArtSceneData : 【失败】");
// }
//
//
// if (artSceneData == null)
// {
// Debug.LogError($"UnityEvo:【{package.PackageName}】加载ArtSceneData为空无法继续执行后续流程请检查");
// }
// }
//
// public override UniTask OnEnterAsync<T>(T param)
// {
// return UniTask.CompletedTask;
// }
//
// public override UniTask OnEnterAsync<T1, T2>(T1 param1, T2 param2)
// {
// return UniTask.CompletedTask;
// }
//
// public override void OnUpdate()
// {
// base.OnUpdate();
// }
//
//
// public override async UniTask OnExitAsync()
// {
// await ((FsmLoadSystem)FsmSystem).ForceUnloadAllAssets(AppConfig.PackageDomainName);
// AppConfig.PackageDomainName = "";
// }
//
// #region 下载热更资
//
// public async UniTask Download()
// {
// int downloadingMaxNum = 10;
// int failedTryAgain = 3;
// var package = YooAssets.GetPackage(AppConfig.PackageDomainName);
// var downloader = package.CreateResourceDownloader(downloadingMaxNum, failedTryAgain);
//
// //没有需要下载的资源
// if (downloader.TotalDownloadCount == 0)
// {
// Debug.Log("UnityEvo:没有需要下载的资源,跳过更新");
// return;
// }
//
// //需要下载的文件总数和总大小
// int totalDownloadCount = downloader.TotalDownloadCount;
// long totalDownloadBytes = downloader.TotalDownloadBytes;
// Debug.Log($"UnityEvo:需要下载的资源的个数【{totalDownloadCount}】,需要下载的资源的总大小{totalDownloadBytes / 1024} MB");
// //===================================适应新版本YooAsset插件的修改===================================
// //注册回调方法
// downloader.DownloadErrorCallback = OnDownloadErrorFunction;
// downloader.DownloadUpdateCallback = OnDownloadProgressUpdateFunction;
// downloader.DownloadFinishCallback = OnDownloadOverFunction;
// downloader.DownloadFileBeginCallback = OnStartDownloadFileFunction;
// //===================================适应新版本YooAsset插件的修改===================================
//
// //开启下载
// downloader.BeginDownload();
// await downloader;
//
// //检测下载结果
// if (downloader.Status == EOperationStatus.Succeed)
// {
// //下载成功
// Debug.Log("UnityEvo:资源更新完成");
// }
// else
// {
// //下载失败
// Debug.Log("UnityEvo:资源更新失败");
// }
// }
//
// //===================================适应新版本YooAsset插件的修改===================================
// /// <summary>
// /// 开始下载
// /// </summary>
// private void OnStartDownloadFileFunction(DownloadFileData downloadFileData)
// {
// Debug.Log(
// $"UnityEvo:开始下载:文件名:{downloadFileData.FileName},文件大小:{downloadFileData.FileSize / 1024f / 1024f} MB");
// }
//
// /// <summary>
// /// 下载完成
// /// </summary>
// private void OnDownloadOverFunction(DownloaderFinishData downloaderFinishData)
// {
// Debug.Log("UnityEvo:下载" + (downloaderFinishData.Succeed ? "成功" : "失败"));
// }
//
// /// <summary>
// /// 更新中
// /// </summary>
// private void OnDownloadProgressUpdateFunction(DownloadUpdateData downloadUpdateData)
// {
// Debug.Log(
// $"UnityEvo:文件总数:{downloadUpdateData.TotalDownloadCount},已下载文件数:{downloadUpdateData.CurrentDownloadCount},下载总大小:{downloadUpdateData.TotalDownloadBytes / 1024f / 1024f} MB已下载大小{downloadUpdateData.CurrentDownloadBytes / 1024f / 1024f} MB");
// }
//
// /// <summary>
// /// 下载出错
// /// </summary>
// /// <param name="errorData"></param>
// private void OnDownloadErrorFunction(DownloadErrorData errorData)
// {
// Debug.Log($"UnityEvo:下载出错:包名:{errorData.PackageName} 文件名:{errorData.FileName},错误信息:{errorData.ErrorInfo}");
// }
// //===================================适应新版本YooAsset插件的修改===================================
//
// #endregion
// }
// }