/// <summary> /// 总览 /// </summary> private void drawOverview() { ABMainChecker mainCheckr = ABMainChecker.MainChecker; GUILayout.BeginHorizontal(); if (GUILayout.Button(string.Format("总资源数:{0}", mainCheckr.BundleList.Count), GUILayout.Height(50))) { scrollPos = Vector2.zero; curView = EView.ALLAsset; } if (GUILayout.Button(string.Format("冗余资源数:{0}", redundancyDic.Count), GUILayout.Height(50))) { scrollPos = Vector2.zero; redundancyList = redundancyDic.Values.ToList(); redundancyList.Sort((x, y) => (new CaseInsensitiveComparer()).Compare(x.BundleName, y.BundleName)); curView = EView.RedundancyAssets; } if (GUILayout.Button(string.Format("丢失AB数:{0}", mainCheckr.MissingRes.Count), GUILayout.Height(50))) { scrollPos = Vector2.zero; selectAsset = ""; mainCheckr.MissingRes.Sort((x, y) => (new CaseInsensitiveComparer()).Compare(x.Name, y.Name)); curView = EView.MissingAsset; } GUILayout.EndHorizontal(); }
private void loadAssetBundle(EditorBundleBean bundle) { loadIndex++; EditorUtility.DisplayProgressBar("分析中", "分析AssetBundle资源...", loadIndex / loadCount); string manifest = string.Concat(bundle.BundlePath, ".manifest"); if (!File.Exists(manifest)) { Debug.LogWarning("Cant find manifest ! " + manifest + "[" + bundle.BundleName + "]"); return; } manifest = File.ReadAllText(manifest); string[] manifestInfoArr = manifest.Split('\n'); //查找包含资源 string[] bundInfo = getBundleInfo(manifestInfoArr, "Assets:"); List <ResoucresBean> allAssets = bundle.GetAllAssets(); ABMainChecker mainCheck = ABMainChecker.MainChecker; foreach (string assetPath in bundInfo) { //string assetName = Path.GetFileName(assetPath); ResoucresBean rb = null; if (!mainCheck.ResourceDic.TryGetValue(assetPath, out rb)) { rb = new ResoucresBean(assetPath); mainCheck.ResourceDic[assetPath] = rb; } if (!rb.IncludeBundles.Contains(bundle)) { rb.IncludeBundles.Add(bundle); } allAssets.Add(rb); } //查找依赖 bundInfo = getBundleInfo(manifestInfoArr, "Dependencies:"); Dictionary <string, EditorBundleBean> bundles = ABMainChecker.MainChecker.BundleList; List <EditorBundleBean> depBundles = bundle.GetAllDependencies(); foreach (string curAssetPath in bundInfo) { EditorBundleBean depBundle = null; string assetPath = GetRealBundlePath(curAssetPath); if (!bundles.TryGetValue(assetPath, out depBundle)) { depBundle = new EditorBundleBean(assetPath); bundles[assetPath] = depBundle; loadAssetBundle(depBundle); } //依赖记录 if (!depBundles.Contains(depBundle)) { depBundles.Add(depBundle); } //被依赖 List <EditorBundleBean> beDepBundles = depBundle.GetBedependencies(); if (!beDepBundles.Contains(bundle)) { beDepBundles.Add(bundle); } } }
public static void ShowChecker() { MainChecker = EditorWindow.GetWindow <ABMainChecker>(); MainChecker.OnInit(); MainChecker.Show(); }