/// <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(); }