/// <summary> /// 获取文件更新列表 /// </summary> /// <param name="resUrl">更新url</param> /// <returns>迭代器</returns> private IEnumerator UpdateList(string resUrl) { App.TriggerGlobal(AutoUpdateEvents.ON_UPDATE_START, this) .SetEventLevel(EventLevel.Global) .Trigger(); resUrl = resUrl + Path.AltDirectorySeparatorChar + Env.PlatformToName(Env.SwitchPlatform); var request = UnityWebRequest.Get(resUrl + Path.AltDirectorySeparatorChar + UpdateFileStore.FILE_NAME); yield return(request.Send()); if (request.isError || request.responseCode != 200) { isUpdate = false; App.TriggerGlobal(AutoUpdateEvents.ON_UPDATE_LIST_FAILED, this) .SetEventLevel(EventLevel.Global) .Trigger(); yield break; } App.TriggerGlobal(AutoUpdateEvents.ON_SCANNING_DISK_FILE_HASH_START, this) .SetEventLevel(EventLevel.Global) .Trigger(); var fileStore = App.Make <UpdateFileStore>(); var newLst = fileStore.LoadFromBytes(request.downloadHandler.data); var oldLst = new UpdateFile(); //fileStore.LoadFromPath(Env.AssetPath); Disk.Root.Create(); Disk.Root.Walk((file) => { if (Util.StandardPath(file.FullName).EndsWith(".meta")) { return; } var fullName = Util.StandardPath(file.FullName); var assetName = fullName.Substring(Env.AssetPath.Length); oldLst.Append(assetName, Hash.FileMd5(file.FullName), file.Length); }); App.TriggerGlobal(AutoUpdateEvents.ON_SCANNING_DISK_FILE_HASH_END, this) .SetEventLevel(EventLevel.Global) .Trigger(); UpdateFile needUpdateLst, needDeleteLst; oldLst.Comparison(newLst, out needUpdateLst, out needDeleteLst); yield return(DeleteOldAsset(needDeleteLst)); yield return(UpdateAssetFromUrl(needUpdateLst, resUrl)); fileStore.Save(Env.AssetPath, newLst); App.TriggerGlobal(AutoUpdateEvents.ON_UPDATE_COMPLETE, this) .SetEventLevel(EventLevel.Global) .Trigger(); }
/// <summary> /// 获取文件更新列表 /// </summary> /// <returns></returns> protected IEnumerator UpdateList(string resUrl) { base.Event.Trigger(AutoUpdateEvents.ON_UPDATE_START); resUrl = resUrl + Path.AltDirectorySeparatorChar + Env.PlatformToName(Env.SwitchPlatform); UnityWebRequest request = UnityWebRequest.Get(resUrl + Path.AltDirectorySeparatorChar + UpdateFileStore.FILE_NAME); yield return(request.Send()); if (request.isError || request.responseCode != 200) { this.isUpdate = false; base.Event.Trigger(AutoUpdateEvents.ON_UPDATE_LIST_FAILED); yield break; } base.Event.Trigger(AutoUpdateEvents.ON_SCANNING_DISK_FILE_HASH_START); var fileStore = new UpdateFileStore(); var newLst = fileStore.LoadFromBytes(request.downloadHandler.data); var oldLst = new UpdateFile(); //fileStore.LoadFromPath(Env.AssetPath); Disk.Root.Create(); Disk.Root.Walk((file) => { if (!file.FullName.Standard().EndsWith(".meta")) { string fullName = file.FullName.Standard(); string assetName = fullName.Substring(Env.AssetPath.Length); oldLst.Append(assetName, Hash.FileHash(file.FullName), file.Length); } }); base.Event.Trigger(AutoUpdateEvents.ON_SCANNING_DISK_FILE_HASH_END); UpdateFile needUpdateLst, needDeleteLst; oldLst.Comparison(newLst, out needUpdateLst, out needDeleteLst); yield return(this.DeleteOldAsset(needDeleteLst)); yield return(this.UpdateAssetFromUrl(needUpdateLst, resUrl)); fileStore.Save(Env.AssetPath, newLst); base.Event.Trigger(AutoUpdateEvents.ON_UPDATE_COMPLETE); }