private async Task LoadAllMetaDataForLoader(AssetBundleLoader loader, bool createIfNotExisting = false) { var sw = DebugTimer.StartNew("Loading Metadata"); foreach (var assetMetaPath in loader.CollectFiles(_pluginDirs)) { if (_metaData.TryGetValue(assetMetaPath.RelativePath + ".meta", out _)) { continue; } if (!assetMetaPath.HasMetaData) { if (createIfNotExisting) { var comp = await this[PathTools.ToRelativePath(assetMetaPath.Path)]; if (comp == null) { continue; } var metaData = new PreloadMetaData(assetMetaPath, comp, comp.AssetTypeDefinition); metaData.SaveToFile(); _metaData.Add(assetMetaPath.RelativePath + ".meta", metaData); } } else { var metaData = new PreloadMetaData(assetMetaPath); metaData.LoadFromFile(); metaData.IsFavorite = _config.IsFavorite(PathTools.ToRelativePath(assetMetaPath.Path)); _metaData.Add(assetMetaPath.RelativePath + ".meta", metaData); } } sw.Print(_logger); }