/// <summary> /// 依赖的Bundle /// </summary> private void drawDepdencieBundle() { float width = ABMainChecker.MainChecker.Width * 0.5f - 10; GUILayout.BeginVertical(GUILayout.Width(width)); GUILayoutHelper.DrawHeader("依赖的AssetBundle"); depScrollPos = GUILayout.BeginScrollView(depScrollPos); int indexRow = 0; foreach (EditorBundleBean depBundle in curBundle.GetAllDependencies()) { indexRow++; GUI.backgroundColor = indexRow % 2 == 0 ? Color.white : new Color(0.8f, 0.8f, 0.8f); GUILayout.BeginHorizontal("AS TextArea", GUILayout.MinHeight(20f)); GUI.backgroundColor = Color.white; //Name GUILayout.Label(depBundle.BundleName); GUILayout.EndHorizontal(); } GUILayout.EndScrollView(); GUILayout.EndVertical(); }
private void drawRowBundle(EditorBundleBean bundle) { indexRow++; GUI.backgroundColor = indexRow % 2 == 0 ? Color.white : new Color(0.8f, 0.8f, 0.8f); GUILayout.BeginHorizontal("AS TextArea", GUILayout.MinHeight(20f)); GUI.backgroundColor = Color.white; //名称 GUILayout.Label(bundle.BundleName, GUILayout.Width(200)); //依赖数量 List <EditorBundleBean> dependencies = bundle.GetAllDependencies(); GUILayout.Label(dependencies.Count.ToString(), GUILayout.Width(80)); //文件大小 GUILayout.Label(bundle.FileSize >= 1024 ? string.Format("{0:F}MB", bundle.FileSize / 1024F) : string.Format("{0}KB", bundle.FileSize), GUILayout.Width(80)); //具体的ab名称 GUILayout.BeginVertical(); int column = Mathf.Max(1, (int)((ABMainChecker.MainChecker.Width - 380) / 150)); int endIndex = 0; for (int i = 0, maxCount = dependencies.Count; i < maxCount; i++) { EditorBundleBean depBundle = dependencies[i]; if (i % column == 0) { endIndex = i + column - 1; GUILayout.BeginHorizontal(); } if (GUILayout.Button(depBundle.BundleName, GUILayout.Width(150))) { ABMainChecker.MainChecker.DetailBundleView.SetCurrentBundle(depBundle); } if (i == endIndex) { endIndex = 0; GUILayout.EndHorizontal(); } } if (endIndex != 0) { GUILayout.EndHorizontal(); } GUILayout.EndVertical(); //查询 GUILayout.Space(15); if (GUILayout.Button("GO", GUILayout.Width(50), GUILayout.Height(25))) { ABMainChecker.MainChecker.DetailBundleView.SetCurrentBundle(bundle); } GUILayout.Space(15); 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); } } }