using System; using System.Collections.Generic; using System.IO; using Cysharp.Threading.Tasks; using UnityEngine; public class CheckAssetValidTask : LaunchTask { public override float expectTime { get { return LocalSave.GetFloat("CheckAssetValidTask_ExpectTime", 3f); } protected set { LocalSave.SetFloat("CheckAssetValidTask_ExpectTime", value); } } public override void Begin() { LaunchInHot.m_CurrentStage = LaunchStage.CheckAsset; duration = Mathf.Max(0.5f, expectTime); ServerListCenter.Instance.RequestJumpUrl().Forget(); // TODO YYL // OperationLogCollect.Instance.RecordLauchEvent(2); // OperationLogCollect.Instance.RecordEvent(2); VersionConfig.GetAsync().ContinueWith(config => { if (VersionUtility.Instance.NeedDownAsset()) { done = false; progress = 0f; // 通过 YooAsset(ConfigManager)加载配置,不再走旧的 HTTP 下载 LoadConfigsViaYooAsset().Forget(); } else { done = true; } }).Forget(); } private async UniTaskVoid LoadConfigsViaYooAsset() { try { // 并行加载 PriorBundle 和 OPConfig(通过 YooAsset / ConfigManager) var t1 = PriorBundleConfig.LazyInitAsync(); var t2 = OPConfigConfig.LazyInitAsync(); await UniTask.WhenAll(t1, t2); Debug.Log("[CheckAssetValidTask] PriorBundle 和 OPConfig 通过 YooAsset 加载完成"); // YooAsset 已在 Launch 阶段完成资源版本检查和下载 // 不再需要旧的 AssetsVersion.txt 下载 + 文件校验流程 AssetVersionUtility.ForceCompleteCheck(); } catch (Exception ex) { Debug.LogError($"[CheckAssetValidTask] YooAsset 加载配置失败: {ex}"); AssetVersionUtility.ForceCompleteCheck(); } } public override void End() { expectTime = timer; Debug.LogFormat("{0}执行时长:{1};", this.GetType().Name, timer); GameNotice.OpenGameNotice(); OperationLogCollect.Instance.RecordLauchEvent(13); } public override void Update() { if (done) { return; } timer += Time.deltaTime; if (!AssetVersionUtility.checkAssetCompleted) { done = false; progress = timer / expectTime; } else { done = true; } ExceptionReport(); } }