Skip to content

Commit fba35cb

Browse files
committed
检查更新逻辑改变
1 parent 4874318 commit fba35cb

4 files changed

Lines changed: 109 additions & 99 deletions

File tree

Assets/BundleMaster/BundleMasterRuntime/AssetComponentUpdate.cs

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -119,16 +119,18 @@ public static async ETTask<UpdateBundleDataInfo> CheckAllBundlePackageUpdate(Dic
119119
}
120120
}
121121

122+
string[] remoteVersionData = remoteVersionLog.Split('\n');
123+
string[] localVersionData = localVersionLog.Split('\n');
122124
if (bundlePackageInfo.Value)
123125
{
124-
await CalcNeedUpdateBundleFileCRC(updateBundleDataInfo, bundlePackageName, remoteVersionLog, localVersionLog);
126+
await CalcNeedUpdateBundleFileCRC(updateBundleDataInfo, bundlePackageName, remoteVersionData, localVersionData);
125127
}
126128
else
127129
{
128-
await CalcNeedUpdateBundle(updateBundleDataInfo, bundlePackageName, remoteVersionLog, localVersionLog);
130+
await CalcNeedUpdateBundle(updateBundleDataInfo, bundlePackageName, remoteVersionData, localVersionData);
129131
}
130132
}
131-
if (updateBundleDataInfo.NeedUpdateSize > 0)
133+
if (updateBundleDataInfo.PackageNeedUpdateBundlesInfos.Count > 0)
132134
{
133135
updateBundleDataInfo.NeedUpdate = true;
134136
}
@@ -148,10 +150,8 @@ public static async ETTask<UpdateBundleDataInfo> CheckAllBundlePackageUpdate(Dic
148150
/// <summary>
149151
/// 获取所哟需要更新的Bundle的文件(不检查文件CRC)
150152
/// </summary>
151-
private static async ETTask CalcNeedUpdateBundle(UpdateBundleDataInfo updateBundleDataInfo, string bundlePackageName, string remoteVersionLog, string localVersionLog)
153+
private static async ETTask CalcNeedUpdateBundle(UpdateBundleDataInfo updateBundleDataInfo, string bundlePackageName, string[] remoteVersionData, string[] localVersionData)
152154
{
153-
string[] remoteVersionData = remoteVersionLog.Split('\n');
154-
string[] localVersionData = localVersionLog.Split('\n');
155155
string[] remoteVersionDataSplits = remoteVersionData[0].Split('|');
156156
int remoteVersion = int.Parse(remoteVersionDataSplits[1]);
157157
int localVersion = int.Parse(localVersionData[0].Split('|')[1]);
@@ -276,6 +276,11 @@ private static async ETTask CalcNeedUpdateBundle(UpdateBundleDataInfo updateBund
276276
needUpdateBundles.Add(info[0], long.Parse(info[1]));
277277
}
278278
}
279+
if (!(needUpdateBundles.Count > 0 || remoteVersionData[0] != localVersionData[0]))
280+
{
281+
//说明这个分包不需要更新
282+
return;
283+
}
279284
updateBundleDataInfo.PackageNeedUpdateBundlesInfos.Add(bundlePackageName, needUpdateBundles);
280285
foreach (long needUpdateBundleSize in needUpdateBundles.Values)
281286
{
@@ -287,10 +292,8 @@ private static async ETTask CalcNeedUpdateBundle(UpdateBundleDataInfo updateBund
287292
/// <summary>
288293
/// 获取所有需要更新的Bundle的文件(计算文件CRC)
289294
/// </summary>
290-
private static async ETTask CalcNeedUpdateBundleFileCRC(UpdateBundleDataInfo updateBundleDataInfo, string bundlePackageName, string remoteVersionLog, string localVersionLog)
295+
private static async ETTask CalcNeedUpdateBundleFileCRC(UpdateBundleDataInfo updateBundleDataInfo, string bundlePackageName, string[] remoteVersionData, string[] localVersionData)
291296
{
292-
string[] remoteVersionData = remoteVersionLog.Split('\n');
293-
string[] localVersionData = localVersionLog.Split('\n');
294297
string[] remoteVersionDataSplits = remoteVersionData[0].Split('|');
295298
int remoteVersion = int.Parse(remoteVersionDataSplits[1]);
296299
int localVersion = int.Parse(localVersionData[0].Split('|')[1]);
@@ -344,6 +347,12 @@ private static async ETTask CalcNeedUpdateBundleFileCRC(UpdateBundleDataInfo upd
344347
await finishTcs;
345348
_checkCount = 0;
346349
}
350+
351+
if (!(needUpdateBundles.Count > 0 || remoteVersionData[0] != localVersionData[0]))
352+
{
353+
//说明这个分包不需要更新
354+
return;
355+
}
347356
updateBundleDataInfo.PackageNeedUpdateBundlesInfos.Add(bundlePackageName, needUpdateBundles);
348357
foreach (long needUpdateBundleSize in needUpdateBundles.Values)
349358
{

Assets/BundleMaster/BundleMasterRuntime/LoadHandler.cs

Lines changed: 43 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -66,24 +66,24 @@ internal void Init(string assetPath, string bundlePackageName, bool haveHandler)
6666
AssetLogHelper.LogError("没有找到资源组: " + groupPath);
6767
return;
6868
}
69-
_loadBase = loadGroup;
69+
LoadBase = loadGroup;
7070
//需要记录loadGroup的依赖
7171
for (int i = 0; i < loadGroup.DependFileName.Count; i++)
7272
{
7373
string dependFile = loadGroup.DependFileName[i];
7474
if (AssetComponent.BundleNameToRuntimeInfo[BundlePackageName].LoadDependDic.TryGetValue(dependFile, out LoadDepend loadDepend))
7575
{
76-
_loadDepends.Add(loadDepend);
76+
LoadDepends.Add(loadDepend);
7777
continue;
7878
}
7979
if (AssetComponent.BundleNameToRuntimeInfo[BundlePackageName].LoadFileDic.TryGetValue(dependFile, out LoadFile loadDependFile))
8080
{
81-
_loadDependFiles.Add(loadDependFile);
81+
LoadDependFiles.Add(loadDependFile);
8282
continue;
8383
}
8484
if (AssetComponent.BundleNameToRuntimeInfo[BundlePackageName].LoadGroupDic.TryGetValue(dependFile, out LoadGroup loadDependGroup))
8585
{
86-
_loadDependGroups.Add(loadDependGroup);
86+
LoadDependGroups.Add(loadDependGroup);
8787
continue;
8888
}
8989
AssetLogHelper.LogError("依赖的资源没有找到对应的类: " + dependFile);
@@ -96,24 +96,24 @@ internal void Init(string assetPath, string bundlePackageName, bool haveHandler)
9696
AssetLogHelper.LogError("没有找到资源: " + AssetPath);
9797
return;
9898
}
99-
_loadBase = loadFile;
99+
LoadBase = loadFile;
100100
//需要记录loadFile的依赖
101101
for (int i = 0; i < loadFile.DependFileName.Length; i++)
102102
{
103103
string dependFile = loadFile.DependFileName[i];
104104
if (AssetComponent.BundleNameToRuntimeInfo[BundlePackageName].LoadDependDic.TryGetValue(dependFile, out LoadDepend loadDepend))
105105
{
106-
_loadDepends.Add(loadDepend);
106+
LoadDepends.Add(loadDepend);
107107
continue;
108108
}
109109
if (AssetComponent.BundleNameToRuntimeInfo[BundlePackageName].LoadFileDic.TryGetValue(dependFile, out LoadFile loadDependFile))
110110
{
111-
_loadDependFiles.Add(loadDependFile);
111+
LoadDependFiles.Add(loadDependFile);
112112
continue;
113113
}
114114
if (AssetComponent.BundleNameToRuntimeInfo[BundlePackageName].LoadGroupDic.TryGetValue(dependFile, out LoadGroup loadDependGroup))
115115
{
116-
_loadDependGroups.Add(loadDependGroup);
116+
LoadDependGroups.Add(loadDependGroup);
117117
continue;
118118
}
119119
AssetLogHelper.LogError("依赖的资源没有找到对应的类: " + dependFile);
@@ -125,20 +125,20 @@ internal void Init(string assetPath, string bundlePackageName, bool haveHandler)
125125
/// </summary>
126126
internal void Load()
127127
{
128-
_loadBase.LoadAssetBundle(BundlePackageName);
129-
for (int i = 0; i < _loadDepends.Count; i++)
128+
LoadBase.LoadAssetBundle(BundlePackageName);
129+
for (int i = 0; i < LoadDepends.Count; i++)
130130
{
131-
_loadDepends[i].LoadAssetBundle(BundlePackageName);
131+
LoadDepends[i].LoadAssetBundle(BundlePackageName);
132132
}
133-
for (int i = 0; i < _loadDependFiles.Count; i++)
133+
for (int i = 0; i < LoadDependFiles.Count; i++)
134134
{
135-
_loadDependFiles[i].LoadAssetBundle(BundlePackageName);
135+
LoadDependFiles[i].LoadAssetBundle(BundlePackageName);
136136
}
137-
for (int i = 0; i < _loadDependGroups.Count; i++)
137+
for (int i = 0; i < LoadDependGroups.Count; i++)
138138
{
139-
_loadDependGroups[i].LoadAssetBundle(BundlePackageName);
139+
LoadDependGroups[i].LoadAssetBundle(BundlePackageName);
140140
}
141-
FileAssetBundle = _loadBase.AssetBundle;
141+
FileAssetBundle = LoadBase.AssetBundle;
142142
LoadState = LoadState.Finish;
143143
}
144144

@@ -149,48 +149,49 @@ internal async ETTask LoadAsync()
149149
{
150150
LoadState = LoadState.Loading;
151151
//计算出所有需要加载的Bundle包的总数
152-
RefLoadFinishCount = _loadDepends.Count + _loadDependFiles.Count + _loadDependGroups.Count + 1;
152+
RefLoadFinishCount = LoadDepends.Count + LoadDependFiles.Count + LoadDependGroups.Count + 1;
153153
ETTask tcs = ETTask.Create(true);
154-
LoadAsyncLoader(_loadBase, tcs).Coroutine();
155-
for (int i = 0; i < _loadDepends.Count; i++)
154+
LoadAsyncLoader(LoadBase, tcs).Coroutine();
155+
for (int i = 0; i < LoadDepends.Count; i++)
156156
{
157-
LoadAsyncLoader(_loadDepends[i], tcs).Coroutine();
157+
LoadAsyncLoader(LoadDepends[i], tcs).Coroutine();
158158
}
159-
for (int i = 0; i < _loadDependFiles.Count; i++)
159+
for (int i = 0; i < LoadDependFiles.Count; i++)
160160
{
161-
LoadAsyncLoader(_loadDependFiles[i], tcs).Coroutine();
161+
LoadAsyncLoader(LoadDependFiles[i], tcs).Coroutine();
162162
}
163-
for (int i = 0; i < _loadDependGroups.Count; i++)
163+
for (int i = 0; i < LoadDependGroups.Count; i++)
164164
{
165-
LoadAsyncLoader(_loadDependGroups[i], tcs).Coroutine();
165+
LoadAsyncLoader(LoadDependGroups[i], tcs).Coroutine();
166166
}
167167
await tcs;
168168
if (LoadState != LoadState.Finish)
169169
{
170-
LoadState = LoadState.Finish;
171-
FileAssetBundle = _loadBase.AssetBundle;
170+
AssetLogHelper.Log("此资源异步加载时触发了强制加载: " + AssetPath);
172171
}
172+
LoadState = LoadState.Finish;
173+
FileAssetBundle = LoadBase.AssetBundle;
173174
}
174175

175176
/// <summary>
176177
/// 强制异步加载完成
177178
/// </summary>
178179
internal void ForceAsyncLoadFinish()
179180
{
180-
_loadBase.ForceLoadFinish(BundlePackageName);
181-
for (int i = 0; i < _loadDepends.Count; i++)
181+
LoadBase.ForceLoadFinish(BundlePackageName);
182+
for (int i = 0; i < LoadDepends.Count; i++)
182183
{
183-
_loadDepends[i].ForceLoadFinish(BundlePackageName);
184+
LoadDepends[i].ForceLoadFinish(BundlePackageName);
184185
}
185-
for (int i = 0; i < _loadDependFiles.Count; i++)
186+
for (int i = 0; i < LoadDependFiles.Count; i++)
186187
{
187-
_loadDependFiles[i].ForceLoadFinish(BundlePackageName);
188+
LoadDependFiles[i].ForceLoadFinish(BundlePackageName);
188189
}
189-
for (int i = 0; i < _loadDependGroups.Count; i++)
190+
for (int i = 0; i < LoadDependGroups.Count; i++)
190191
{
191-
_loadDependGroups[i].ForceLoadFinish(BundlePackageName);
192+
LoadDependGroups[i].ForceLoadFinish(BundlePackageName);
192193
}
193-
FileAssetBundle = _loadBase.AssetBundle;
194+
FileAssetBundle = LoadBase.AssetBundle;
194195
LoadState = LoadState.Finish;
195196
}
196197

@@ -202,23 +203,23 @@ protected override void ClearAsset()
202203
Asset = null;
203204
FileAssetBundle = null;
204205
LoadState = LoadState.NoLoad;
205-
foreach (LoadDepend loadDepends in _loadDepends)
206+
foreach (LoadDepend loadDepends in LoadDepends)
206207
{
207208
loadDepends.SubRefCount();
208209
}
209-
_loadDepends.Clear();
210-
foreach (LoadFile loadDependFiles in _loadDependFiles)
210+
LoadDepends.Clear();
211+
foreach (LoadFile loadDependFiles in LoadDependFiles)
211212
{
212213
loadDependFiles.SubRefCount();
213214
}
214-
_loadDependFiles.Clear();
215-
foreach (LoadGroup loadDependGroups in _loadDependGroups)
215+
LoadDependFiles.Clear();
216+
foreach (LoadGroup loadDependGroups in LoadDependGroups)
216217
{
217218
loadDependGroups.SubRefCount();
218219
}
219-
_loadDependGroups.Clear();
220-
_loadBase.SubRefCount();
221-
_loadBase = null;
220+
LoadDependGroups.Clear();
221+
LoadBase.SubRefCount();
222+
LoadBase = null;
222223
//从缓存里取出进池
223224
if (!AssetComponent.BundleNameToRuntimeInfo.TryGetValue(BundlePackageName, out BundleRuntimeInfo bundleRuntimeInfo))
224225
{

Assets/BundleMaster/BundleMasterRuntime/LoadHandlerBase.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,22 @@ public abstract class LoadHandlerBase
4444
/// <summary>
4545
/// 资源所在的LoadBase包
4646
/// </summary>
47-
protected LoadBase _loadBase = null;
47+
protected LoadBase LoadBase = null;
4848

4949
/// <summary>
5050
/// 依赖的Bundle包
5151
/// </summary>
52-
protected List<LoadDepend> _loadDepends = new List<LoadDepend>();
52+
protected readonly List<LoadDepend> LoadDepends = new List<LoadDepend>();
5353

5454
/// <summary>
5555
/// 依赖的其它File包
5656
/// </summary>
57-
protected List<LoadFile> _loadDependFiles = new List<LoadFile>();
57+
protected readonly List<LoadFile> LoadDependFiles = new List<LoadFile>();
5858

5959
/// <summary>
6060
/// 依赖的其它Group包
6161
/// </summary>
62-
protected List<LoadGroup> _loadDependGroups = new List<LoadGroup>();
62+
protected readonly List<LoadGroup> LoadDependGroups = new List<LoadGroup>();
6363

6464
/// <summary>
6565
/// 加载计数器(负责完成所有依赖的Bundle加载完成)

0 commit comments

Comments
 (0)