When open multiple bundle files, first extract all the assets files into memory,and then parse the file to make sure the sharedfile index is correct
This commit is contained in:
parent
2d7fd68ff5
commit
6d019e6e8a
|
@ -126,8 +126,6 @@ namespace Unity_Studio
|
||||||
StatusStripUpdate("Decompressing " + Path.GetFileName(bundleFileName) + "...");
|
StatusStripUpdate("Decompressing " + Path.GetFileName(bundleFileName) + "...");
|
||||||
BundleFile b_File = new BundleFile(bundleFileName);
|
BundleFile b_File = new BundleFile(bundleFileName);
|
||||||
|
|
||||||
List<AssetsFile> b_assetsfileList = new List<AssetsFile>();
|
|
||||||
|
|
||||||
foreach (var memFile in b_File.MemoryAssetsFileList) //filter unity files
|
foreach (var memFile in b_File.MemoryAssetsFileList) //filter unity files
|
||||||
{
|
{
|
||||||
StatusStripUpdate("Loading " + memFile.fileName);
|
StatusStripUpdate("Loading " + memFile.fileName);
|
||||||
|
@ -144,24 +142,19 @@ namespace Unity_Studio
|
||||||
assetsFile.version = Array.ConvertAll((from Match m in Regex.Matches(assetsFile.m_Version, @"[0-9]") select m.Value).ToArray(), int.Parse);
|
assetsFile.version = Array.ConvertAll((from Match m in Regex.Matches(assetsFile.m_Version, @"[0-9]") select m.Value).ToArray(), int.Parse);
|
||||||
assetsFile.buildType = b_File.versionEngine.Split(AssetsFile.buildTypeSplit, StringSplitOptions.RemoveEmptyEntries);
|
assetsFile.buildType = b_File.versionEngine.Split(AssetsFile.buildTypeSplit, StringSplitOptions.RemoveEmptyEntries);
|
||||||
}
|
}
|
||||||
b_assetsfileList.Add(assetsFile);
|
assetsfileList.Add(assetsFile);
|
||||||
}
|
}
|
||||||
assetsfileandstream[assetsFile.fileName] = assetsFile.a_Stream;
|
assetsfileandstream[assetsFile.fileName] = assetsFile.a_Stream;
|
||||||
}
|
}
|
||||||
if (b_assetsfileList.Count > 0)
|
}
|
||||||
|
|
||||||
|
public static void LoadAssetsFromBundle()
|
||||||
|
{
|
||||||
|
foreach (var assetsFile in assetsfileList)
|
||||||
{
|
{
|
||||||
assetsfileList.AddRange(b_assetsfileList);
|
foreach (var sharedFile in assetsFile.sharedAssetsList)
|
||||||
foreach (var assetsFile in b_assetsfileList)
|
|
||||||
{
|
{
|
||||||
foreach (var sharedFile in assetsFile.sharedAssetsList)
|
sharedFile.Index = assetsfileList.FindIndex(aFile => aFile.fileName.ToUpper() == sharedFile.fileName.ToUpper());
|
||||||
{
|
|
||||||
sharedFile.fileName = Path.GetDirectoryName(bundleFileName) + "\\" + sharedFile.fileName;
|
|
||||||
var loadedSharedFile = b_assetsfileList.Find(aFile => aFile.filePath == sharedFile.fileName);
|
|
||||||
if (loadedSharedFile != null)
|
|
||||||
{
|
|
||||||
sharedFile.Index = assetsfileList.IndexOf(loadedSharedFile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,6 +112,7 @@ namespace Unity_Studio
|
||||||
LoadBundleFile(filename);
|
LoadBundleFile(filename);
|
||||||
ProgressBarPerformStep();
|
ProgressBarPerformStep();
|
||||||
}
|
}
|
||||||
|
LoadAssetsFromBundle();
|
||||||
}
|
}
|
||||||
BuildAssetStrucutres();
|
BuildAssetStrucutres();
|
||||||
unityFilesHash.Clear();
|
unityFilesHash.Clear();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user