public static void CheckDir(VfsEntry dir, AssetLoadFunc loadFunc) { if (dir == null) { return; } var manifestFile = dir.Find("manifest.json"); if (manifestFile != null && manifestFile.IsFile) { Debug.Log($"found manifest at {manifestFile.Path}"); using (var reader = new StreamReader(manifestFile.SeekableStream())) { try { if (reader == null) { Debug.Log("no reader cannot open stream"); } Manifest manifest; try { var buffer = reader.ReadToEnd(); manifest = Newtonsoft.Json.JsonConvert.DeserializeObject <Manifest>(buffer); } catch { throw new Exception("Out of date AssetBundle, rebuild or download latest AssetBundle."); } loadFunc(manifest, dir); } catch (Exception ex) { Debug.LogWarning($"failed to load asset from {manifestFile.Path}"); Debug.LogException(ex); } } } else { foreach (var entry in dir) { CheckDir(entry, loadFunc); } } }
static void checkDir(VfsEntry dir, AssetLoadFunc loadFunc) { if (dir == null) { return; } var manifestFile = dir.Find("manifest"); if (manifestFile != null && manifestFile.IsFile) { Debug.Log($"found manifest at {manifestFile.Path}"); using (var reader = new StreamReader(manifestFile.SeekableStream())) { try { if (reader == null) { Debug.Log("no reader?"); } Manifest manifest; try { manifest = new Deserializer().Deserialize <Manifest>(reader); } catch { throw new Exception("Out of date AssetBundle, rebuild or download latest AssetBundle."); } loadFunc(manifest, dir); } catch (Exception ex) { Debug.LogWarning($"failed to load asset from {manifestFile.Path}: {ex.Message} STACK: {ex.StackTrace}"); } } } else { foreach (var entry in dir) { checkDir(entry, loadFunc); } } }