示例#1
0
        public static void AllAnalysisAsset()
        {
            _allAssets.Clear();
            List <string> assetPaths = EPathHelper.GetAssetsPath(EAssetBundleConst.MAIN_RES_DRIECTORY, true);
            int           length     = assetPaths.Count;

            for (int i = 0; i < length; i++)
            {
                EditorUtility.DisplayProgressBar("分析主资源", assetPaths[i], (float)(i + 1) / length);
                AddAsset(assetPaths[i], true);

                string[] deps = AssetDatabase.GetDependencies(assetPaths[i], true);
                for (int j = 0; j < deps.Length; j++)
                {
                    if (assetPaths[i] == deps[j])
                    {
                        continue;
                    }
                    AddAsset(deps[j], false);
                }
            }

            foreach (var info in _allAssets)
            {
                info.Value.AnalyzeAsset();
            }
            EditorUtility.ClearProgressBar();
            EditorUtility.DisplayDialog("分析资源", "分析结束,请开始设置AssetBundle Name", "Ok");
            Resources.UnloadUnusedAssets();
        }
示例#2
0
        public static string RawAnimDirectory = "Assets/Raw/Model/"; // Fbx原始目录

        //[MenuItem("Tools/Animation/分离动画")]
        public static void AllSeparationAnimationByFbx()
        {
            List <string> assetPaths = EPathHelper.GetAssetsPath(RawAnimDirectory, true, "*.FBX");


            int length = assetPaths.Count;

            for (int i = 0; i < length; i++)
            {
                List <AnimationClip> clips = new List <AnimationClip>();

                string assetPath  = assetPaths[i];
                string animFolder = FindAnimsByFolder(assetPath, clips);
                if (string.IsNullOrEmpty(animFolder) || clips.Count == 0)
                {
                    continue;
                }
                animFolder = GetFolderName(animFolder);

                if (!Directory.Exists(CopyAnimPath + animFolder))
                {
                    Directory.CreateDirectory(CopyAnimPath + animFolder);
                }

                int clipLength = clips.Count;
                for (int k = 0; k < clipLength; k++)
                {
                    EditorUtility.DisplayProgressBar("复制文件", "复制" + clips[k] + "到:" + animFolder + "文件夹", (i) / (clipLength * 1.0f));
                    CopyAsset(clips[k], animFolder);
                }
            }
            EditorUtility.ClearProgressBar();
            AssetDatabase.Refresh();
            AssetDatabase.SaveAssets();
        }
示例#3
0
        // 选择某一条具体的规则
        private void OnRuleSelected(object select, int col)
        {
            AssetFormatRule rule = select as AssetFormatRule;

            if (rule == null)
            {
                return;
            }
            _shows.Clear();
            _formatRule = rule;

            List <string> pathList = EPathHelper.GetAssetsPath(rule.FilterPath, true, "*.png");
            int           length   = pathList.Count;

            for (int i = 0; i < length; i++)
            {
                if (!EPathHelper.IsTexture(pathList[i]))
                {
                    continue;
                }
                var tmp = TextureFormatInfo.Create(pathList[i]);
                _shows.Add(tmp);
            }
            _texShowTablePanel.RefreshData(_shows);
        }
示例#4
0
        private void _init()
        {
            List <string> assetsPath = EPathHelper.GetAssetsPath(_directory, true);
            int           length     = assetsPath.Count;

            for (int i = 0; i < length; i++)
            {
                _assetsMap.Add(assetsPath[i]);
            }
        }
示例#5
0
        public static void AllCheckShader()
        {
            List <string> assets_path = EPathHelper.GetAssetsPath(EAssetBundleConst.MAIN_RES_DRIECTORY, true);

            int length = assets_path.Count;

            for (int i = 0; i < length; i++)
            {
                CheckShader(assets_path[i]);
                EditorUtility.DisplayProgressBar("检测Shader", assets_path[i], (float)(i + 1) / length);
            }
            EditorUtility.ClearProgressBar();
        }
示例#6
0
        public static string _searchSuffix             = "*.anim";                                         // *.FBX        查询的目标是fbx还是anim

        #region 预处理

        //[MenuItem("Tools/预处理/动画预处理")]
        public static void AllAnimationPreTreatment()
        {
            //List<string> all_animation = new List<string>(animation_all);

            // 1.找到需要处理的角色prefab
            List <string> charPrefabPath = EPathHelper.GetAssetsPath(_characterPrefabDirectory, false, "*.prefab");
            int           length         = charPrefabPath.Count;

            for (int i = 0; i < length; i++)
            {
                _excute_animation(charPrefabPath[i]);
                EditorUtility.DisplayProgressBar(charPrefabPath[i], string.Format("动画预处理({0}/{1})", i + 1, length), (float)(i + 1) / length);
            }

            SavePrefab();
            EditorUtility.ClearProgressBar();
            EditorUtility.DisplayDialog("", "动画预处理完毕", "OK");
        }
示例#7
0
        /// <summary>
        /// 设置主资源名字
        /// </summary>
        public static void OblyMainAbName()
        {
            List <string> assetsPath  = EPathHelper.GetAssetsPath(EAssetBundleConst.MAIN_RES_DRIECTORY, true);
            List <string> assetsPath1 = EPathHelper.GetAssetsPath(EAssetBundleConst.UI_MAIN_DIRECTORY, true);

            assetsPath.AddRange(assetsPath1);
            int length = assetsPath.Count;

            for (int i = 0; i < length; i++)
            {
                EditorUtility.DisplayProgressBar("设置AssetBundle名字", assetsPath[i], (float)(i + 1) / length);
                SetAbNameByPath(assetsPath[i]);
            }
            EditorUtility.ClearProgressBar();
            Resources.UnloadUnusedAssets();
            AssetDatabase.Refresh();
            AssetDatabase.SaveAssets();
        }
示例#8
0
        public const string SUFFIX_ANIM     = "*.anim";                     // 文件后缀名

        //[MenuItem("Tools/优化/动画内存优化")]
        public static void AllSeoAnimation()
        {
            List <string> anim_paths = EPathHelper.GetAssetsPath(anim_directory, true, SUFFIX_ANIM);

            int length = anim_paths.Count;

            for (int i = 0; i < length; i++)
            {
                AnimationClip clip = AssetDatabase.LoadAssetAtPath <AnimationClip>(anim_paths[i]);
                if (clip == null)
                {
                    continue;
                }
                _seo_animation(clip);
                EditorUtility.DisplayProgressBar(anim_paths[i], string.Format("动画内存优化({0}/{1})", i + 1, length), (float)(i + 1) / length);
            }
            ShowDialog();
        }
示例#9
0
        public void OnSearchTextures(string searchPath)
        {
            _shows.Clear();
            List <string> pathList = EPathHelper.GetAssetsPath(searchPath, true, "*.*");
            int           length   = pathList.Count;

            for (int i = 0; i < length; i++)
            {
                if (!EPathHelper.IsTexture(pathList[i]))
                {
                    continue;
                }
                var tmp = TextureFormatInfo.Create(pathList[i]);
                _shows.Add(tmp);
            }
            _texShowTablePanel.RefreshData(_shows);
            _formatRule = null;
        }
示例#10
0
        // 查找指定目录下的所有动画文件
        public static List <AnimationClip> _find_animation_clip(string folderPath)
        {
            List <AnimationClip> clips     = new List <AnimationClip>();
            List <string>        animsPath = EPathHelper.GetAssetsPath(folderPath, false, _searchSuffix);

            int length = animsPath.Count;

            for (int i = 0; i < length; i++)
            {
                EditorUtility.DisplayProgressBar("加载动画文件,", animsPath[i], (1 + i) / length);
                AnimationClip clip = AssetDatabase.LoadAssetAtPath <AnimationClip>(animsPath[i]);
                if (clip == null)
                {
                    continue;
                }
                clips.Add(clip);
            }
            EditorUtility.ClearProgressBar();
            return(clips);
        }
示例#11
0
        public static void Excute()
        {
            // 1.得到当前的Img路径
            int           length   = _spritePath.Length;
            List <string> imgFiles = new List <string>();

            for (int i = 0; i < length; i++)
            {
                List <string> tmpFiles = EPathHelper.GetAssetsPath(_spritePath[i], true);
                imgFiles.AddRange(tmpFiles);
            }

            // 2.根据路径设置Img的SpriteTag
            length = imgFiles.Count;
            for (int i = 0; i < length; i++)
            {
                EditorUtility.DisplayProgressBar("设置图片的SpriteTag", imgFiles[i], (float)(i) / length);
                SetImgTag(imgFiles[i]);
            }

            // 3.保存
            EditorUtility.ClearProgressBar();
            AssetDatabase.SaveAssets();
        }