Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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);
                }
            }
        }