【m】增加web第一版暂存
All checks were successful
Plugin Library CI / publish (00.BuildOriginality) (push) Successful in 4s
Plugin Library CI / publish (00.StaryEvo) (push) Successful in 4s
Plugin Library CI / publish (00.StaryEvoTools) (push) Successful in 10s
Plugin Library CI / publish (01.HybridCLR) (push) Successful in 5s
Plugin Library CI / publish (02.InformationSave) (push) Successful in 3s
Plugin Library CI / publish (03.YooAsset) (push) Successful in 32s
Plugin Library CI / publish (04.AudioCore) (push) Successful in 3s
Plugin Library CI / publish (05.TableTextConversion) (push) Successful in 4s
Plugin Library CI / publish (06.UIFarme) (push) Successful in 16s
Plugin Library CI / publish (07.RKTools) (push) Successful in 3s
Plugin Library CI / publish (08.UniTask) (push) Successful in 3s
Plugin Library CI / publish (09.CodeChecker) (push) Successful in 16s
Plugin Library CI / publish (10.StoryEditor) (push) Successful in 3s
Plugin Library CI / publish (10.XNode) (push) Successful in 3s
Plugin Library CI / publish (11.PointCloudTools) (push) Successful in 3s

This commit is contained in:
2026-04-18 01:00:51 +08:00
parent ef5113afc6
commit 60f1264d51
20 changed files with 227 additions and 200 deletions

View File

@@ -52,7 +52,6 @@ namespace Stary.Evo
//登录
if ((AppConfig.IsLogin))
{
await GetServerVersion();
await HOST_PLAYMODE(package);
isInitSuccess = await HOST_PLAYMODE(packageRawFile);
}
@@ -78,24 +77,10 @@ namespace Stary.Evo
await UpdateLocalPackage(packageRawFile);
await LoadHotfixSettings();
#elif WEB_PLAYMODE
// IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer);
// var webServerFileSystemParams = FileSystemParameters.CreateDefaultWebServerFileSystemParameters();
// var webRemoteFileSystemParams =
// FileSystemParameters.CreateDefaultWebRemoteFileSystemParameters(remoteServices); //支持跨域下载
//
// var initParameters = new WebPlayModeParameters();
// initParameters.WebServerFileSystemParameters = webServerFileSystemParams;
// initParameters.WebRemoteFileSystemParameters = webRemoteFileSystemParams;
//
// var initOperation = package.InitializeAsync(initParameters);
// await initOperation;
//
// if (initOperation.Status == EOperationStatus.Succeed)
// Debug.Log("UnityEvo:资源包初始化成功!");
// else
// Debug.LogError($"UnityEvo:资源包初始化失败:{initOperation.Error}");
Debug.LogError($"UnityEvo:暂不支持");
await WEB_PLAYMODE(package);
await UpdateLocalPackage(package);
await LoadHotfixSettings();
#endif
}
@@ -119,6 +104,19 @@ namespace Stary.Evo
private async UniTask<bool> HOST_PLAYMODE(ResourcePackage package)
{
var resDmainResponse = await GetServerDomainVersion();
//获取当前版本
var oldVersion = CustomPlayerPrefs.GetString($"{AppConfig.PackageDomainName}_GAME_VERSION");
//版本不一致,开始下载
if (resDmainResponse.PackageVersion != oldVersion)
{
await Download(resDmainResponse.DocumentFileId);
CustomPlayerPrefs.SetString($"{AppConfig.PackageDomainName}_GAME_VERSION",resDmainResponse.PackageVersion);
}
else //版本一致,加载缓存资源
{
Debug.LogWarning($"UnityEvo:当前版本{oldVersion}资源版本一致,自动跳过更新...");
}
var initParams = YooAssetFileSystem.HostInitializeParameter(package.PackageName);
// initParameters.CacheFileSystemParameters = cacheFileSystemParams;
try
@@ -145,6 +143,36 @@ namespace Stary.Evo
return false;
}
private async UniTask<bool> WEB_PLAYMODE(ResourcePackage package)
{
var path = await GetServerVersionPath();
string defaultHostServer = $"{AppConfig.IpConfig}/StaticFiles{path}";
var initParams = YooAssetFileSystem.WebInitializeParameter(package.PackageName, defaultHostServer,"");
// initParameters.CacheFileSystemParameters = cacheFileSystemParams;
try
{
var initOperation = package.InitializeAsync(initParams);
await initOperation;
if (initOperation.Status == EOperationStatus.Succeed)
{
Debug.Log("UnityEvo:从Web加载资源包初始化成功");
return true;
}
else
{
Debug.LogWarning($"UnityEvo:从Web加载资源包初始化失败{initOperation.Error}");
}
}
catch (Exception e)
{
Debug.LogWarning($"UnityEvo:从Web加载资源包初始化失败{e}");
}
return false;
}
private async UniTask<bool> OFFLINE_PLAYMODE(ResourcePackage package)
{
var initParams = YooAssetFileSystem.OfflineInitializeParameter();
@@ -265,7 +293,7 @@ namespace Stary.Evo
#endif
}
private async UniTask GetServerVersion()
private async UniTask<ResDmainResponse> GetServerDomainVersion()
{
// 新增平台判断代码
#if UNITY_EDITOR
@@ -290,31 +318,53 @@ namespace Stary.Evo
{
ResDmainResponse resDmainResponse =
JsonConvert.DeserializeObject<ResDmainResponse>(resDmainMessageEntity.data.ToString());
//获取当前版本
var oldVersion = CustomPlayerPrefs.GetString($"{AppConfig.PackageDomainName}_GAME_VERSION");
//版本不一致,开始下载
if (resDmainResponse.PackageVersion != oldVersion)
{
await Download(resDmainResponse.DocumentFileId);
CustomPlayerPrefs.SetString($"{AppConfig.PackageDomainName}_GAME_VERSION",
resDmainResponse.PackageVersion);
}
else //版本一致,加载缓存资源
{
Debug.LogWarning($"UnityEvo:当前版本{oldVersion}资源版本一致,自动跳过更新...");
}
return resDmainResponse;
}
else
{
Debug.LogWarning($"UnityEvo:获取资源版本失败: 【{resDmainMessageEntity.message}】");
}
return default;
}
private async UniTask<string> GetServerVersionPath()
{
var resDmainResponse = await GetServerDomainVersion();
if (!string.IsNullOrEmpty(resDmainResponse.DocumentFileId))
{
try
{
CustomPlayerPrefs.SetString($"{AppConfig.PackageDomainName}_GAME_VERSION",resDmainResponse.PackageVersion);
string url = $"{AppConfig.IpConfig}/FileLoad/QueryFileById";
var resDmainMessageEntity = await WebRequestSystem.Get(url, resDmainResponse.DocumentFileId);
if (resDmainMessageEntity.code == 200)
{
DocumentFileResponse documentFileResponse =
JsonConvert.DeserializeObject<DocumentFileResponse>(resDmainMessageEntity.data.ToString());
return documentFileResponse.filePath;
}
else
{
Debug.LogWarning($"UnityEvo:获取资源版本失败: 【{resDmainMessageEntity.message}】");
}
}
catch (Exception e)
{
Debug.LogError($"UnityEvo:获取资源版本失败: 【{resDmainResponse.DocumentFileId}】: {e.Message}");
}
}
else
{
Debug.LogError($"UnityEvo:获取资源版本失败: 【{resDmainResponse.DocumentFileId}】");
}
return "";
}
private async UniTask UpdateLocalPackage(ResourcePackage package)
{
//更新失败
Debug.Log($"UnityEvo:开始加载本地缓存资源...");
// 获取上次成功记录的版本
string packageVersion =
@@ -351,7 +401,7 @@ namespace Stary.Evo
{
//初始化读取资源配置表
var package = YooAssets.GetPackage(AppConfig.PackageDomainName);
if (AppConfig.PackageDomainName.Equals("Main") || HybridClREntrance.Global.stage == StageType.Developer)
if (HybridClREntrance.Global.stage == StageType.Developer)
{
//加载热更配置文件
var loadHotfixSettingsOp = package.LoadAssetAsync<DomainConfig>("Config_DomainConfig");
@@ -373,8 +423,12 @@ namespace Stary.Evo
{
Debug.LogError($"UnityEvo:【{package.PackageName}】加载DomainConfig为空无法继续执行后续流程请检查");
}
#if UNITY_WEBGL
await FsmSystem.SetCurState(nameof(ResStartState), domainConfig,domainConfig.className);
#else
FsmSystem.SetCurState(nameof(HotFixDllState), domainConfig);
#endif
}
else if (HybridClREntrance.Global.stage == StageType.Originality)
{