Example #1
0
        /// <summary>
        /// 导入图片后执行
        /// </summary>
        public void OnPreprocessTexture()
        {
            if (AssetImportTool.S_IsEnableImportTeture == false)
            {
                return;
            }

            Debug.Log("OnPreProcessTexture=" + this.assetPath);
            TextureImporter impor = this.assetImporter as TextureImporter;

            if (this.assetPath.StartsWith(string.Format("Assets/{0}", EditorDefine.S_UITextureTopRelativePath)))
            {
                Texture2D texture = AssetDatabase.LoadAssetAtPath <Texture2D>(this.assetPath);
                TextureImporterHelper.OnPresProcessUITextureSetting(texture, impor, this.assetPath);
            } //导入UI资源
        }
        /// <summary>
        /// 根据选择的目录生成预制体并关联这个图片
        /// </summary>
        public static void CreateMultiSpriteRenders_Dirctory()
        {
            string dirctoryPath = AssetDatabase.GetAssetPath(Selection.activeObject);

            if (System.IO.Directory.Exists(dirctoryPath) == false)
            {
                Debug.LogError("当前选择的不是一个可用的目录路径,创建失败");
                return;
            }

            string savePrefabPath = EditorDialogUtility.SaveFileDialog("保存生成的预制体", Application.dataPath + "/Resources/Sprite", "选择一个目录时候不需要输入文件名,按照选择的目录自动创建目录", "");

            savePrefabPath = System.IO.Path.GetDirectoryName(savePrefabPath);

            if (string.IsNullOrEmpty(savePrefabPath))
            {
                Debug.LogEditorInfor("取消 创建SpriteRender");
                return;
            }

            //Debug.Log("dirctoryPath=" + dirctoryPath);
            string parentDirectoryPath = IoUtility.Instance.GetDirectoryParentDcirectory(dirctoryPath); //获取选择的目录的目录名

            if (string.IsNullOrEmpty(parentDirectoryPath))
            {
                Debug.LogError("无法处理的目录 " + parentDirectoryPath);
                return;
            }
            savePrefabPath = string.Format("{0}/{1}", savePrefabPath, parentDirectoryPath);
            if (System.IO.Directory.Exists(savePrefabPath) == false)
            {
                System.IO.Directory.CreateDirectory(savePrefabPath);
            }


            var           assets             = AssetDatabase.FindAssets("t:texture2D", new string[] { dirctoryPath }); //获取当前目录下所有的图片资源GUID
            List <string> allTexture2DAssets = new List <string>();                                                    //所有的图片资源相对资源路径

            foreach (var item in assets)
            {
                allTexture2DAssets.Add(AssetDatabase.GUIDToAssetPath(item));
            }//转成成资源的相对路径

            bool IsNeedReflushAsset = false; //标识是否需要刷新资源

            for (int dex = allTexture2DAssets.Count - 1; dex >= 0; --dex)
            {
                #region 对资源的格式进行处理

                TextureImporter asstImpoter = AssetImporter.GetAtPath(allTexture2DAssets[dex]) as TextureImporter;
                if (asstImpoter == null)
                {
                    IsNeedReflushAsset = true;
                    allTexture2DAssets.RemoveAt(dex);
                    Debug.LogError("理论上不存在这个情况");
                    continue;
                }

                if (asstImpoter.textureType != TextureImporterType.Sprite)
                {
                    IsNeedReflushAsset = true;
                    if (System.IO.Path.GetExtension(allTexture2DAssets[dex]).ToLower() != ".png")
                    {
                        Debug.LogEditorInfor("生成Sprite 关联资源时候 资源不是png格式 " + allTexture2DAssets[dex]);
                        allTexture2DAssets.RemoveAt(dex);
                        continue;
                    }//不是png 图片则不导入 否则强制导入图片
                    Texture2D texture = AssetDatabase.LoadAssetAtPath <Texture2D>(allTexture2DAssets[dex]);
                    TextureImporterHelper.OnPresProcessUITextureSetting(texture, asstImpoter, allTexture2DAssets[dex]);
                }
                #endregion
            }

            if (IsNeedReflushAsset)
            {
                AssetDatabase.Refresh();
            }

            foreach (var sprite2d in allTexture2DAssets)
            {
                //CreateOrUpdateSpritePrefab(sprite2d, System.IO.Path.GetDirectoryName(savePrefabPath));
                CreateOrUpdateSpritePrefab(sprite2d, savePrefabPath);
            }
            AssetDatabase.Refresh();
        }