From 0a858ed58b484a23d01a8232e151dd8efa145561 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期三, 22 八月 2018 14:57:46 +0800
Subject: [PATCH] 1621 IOS分包资源下载弹框,点击暂停游戏崩溃
---
System/AssetVersion/InGameDownLoad.cs | 33 +++++++++++++++++++++++----------
1 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/System/AssetVersion/InGameDownLoad.cs b/System/AssetVersion/InGameDownLoad.cs
index 8f27ffe..10fcb72 100644
--- a/System/AssetVersion/InGameDownLoad.cs
+++ b/System/AssetVersion/InGameDownLoad.cs
@@ -15,8 +15,6 @@
List<AssetVersion> tasks = new List<AssetVersion>();
public bool inGameDownLoadAllow = false;
-
-
public float progress {
get {
@@ -240,7 +238,6 @@
}
}
- int workingQueueMaxCount = 1;
IEnumerator Co_StartDownLoad()
{
@@ -249,18 +246,14 @@
workingQueue.Clear();
okCount = 0;
+ var downLoadTasksQueues = new Queue<AssetVersion>();
+
for (int i = 0; i < tasks.Count; i++)
{
var assetVersion = tasks[i];
if (!assetVersion.localValid)
{
- var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), "/", assetVersion.relativePath);
- var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath);
-
- var remoteFile = new RemoteFile();
- workingQueue.Add(remoteFile);
- remoteFile.Init(remoteURL, localURL, assetVersion, true);
- remoteFile.Begin(OnFileDownLoadCompleted);
+ downLoadTasksQueues.Enqueue(assetVersion);
}
else
{
@@ -270,6 +263,17 @@
while (okCount < totalCount)
{
+ while (workingQueue.Count < 2 && downLoadTasksQueues.Count > 0)
+ {
+ var assetVersion = downLoadTasksQueues.Dequeue();
+ var remoteURL = StringUtility.Contact(VersionUtility.Instance.versionInfo.GetResourcesURL(VersionConfig.Get().branch), "/", assetVersion.relativePath);
+ var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath);
+
+ var remoteFile = new RemoteFile();
+ workingQueue.Add(remoteFile);
+ remoteFile.Init(remoteURL, localURL, assetVersion, true);
+ remoteFile.Begin(OnFileDownLoadCompleted);
+ }
yield return null;
}
@@ -307,6 +311,15 @@
private void OnFileDownLoadCompleted(bool _ok, AssetVersion _assetVersion)
{
+ foreach (var remote in workingQueue)
+ {
+ if (remote.assetVersion == _assetVersion)
+ {
+ workingQueue.Remove(remote);
+ break;
+ }
+ }
+
if (_ok)
{
okCount++;
--
Gitblit v1.8.0