using UnityEditor; using UnityEngine; using System.IO; using System; using System.Collections.Generic; using GFGGame; namespace GFGEditor { public class ImportArtsRes { public static string ragule = @"^[0-9a-zA-Z_]{1,}$"; public static string Md5FilePath = "Assets/MD5"; private static string[] FieldGuideIconSrcPaths = new string[] { "../../../gfg/正式资源/图鉴/" }; public static string FieldGuideIconTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/FieldGuide/Icon/"; public static string FieldGuideIconMd5FileSaveName = "FieldGuideIconMd5"; private static string[] MusicSrcPaths = new string[] { "../../../gfg/正式资源/music/" }; public static string MusicTargetPath = $"{ResPathUtil.MUSIC_DIR_PATH}/"; public static string MusicMd5FileSaveName = "MusicMd5"; private static string[] ItemIconSrcPaths = new string[] { "../../../gfg/正式资源/icon/" }; public static string ItemIconTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Icon/"; public static string IconMd5FileSaveName = "IconMd5"; private static string[] DressUpSrcPaths = new string[] { "../../../gfg/正式资源/suit/" }; public static string DressUpTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/DressUp/"; public static string DressUpMd5FileSaveName = "DressUpMd5"; private static string[] NpcHeadSrcPaths = new string[] { "../../../gfg/正式资源/npc/对战头像/" }; public static string NpcHeadTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Npc/Head/"; public static string HeadMd5FileSaveName = "HeadMd5"; private static string[] NpcPicSrcPaths = new string[] { "../../../gfg/正式资源/npc/对战立绘/" }; public static string NpcPicTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Npc/PicF/"; public static string PicFMd5FileSaveName = "PicFMd5"; private static string[] NpcPicSSrcPaths = new string[] { "../../../gfg/正式资源/npc/对话立绘/" }; public static string NpcPicSTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Npc/PicS/"; public static string PicSMd5FileSaveName = "PicSMd5"; private static string[] BgSrcPaths = new string[] { "../../../gfg/正式资源/scene/" }; public static string BgTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/DressUp/"; public static string BgMd5FileSaveName = "BgMd5"; private static string[] CardBgSrcPaths = new string[] { "../../../gfg/正式资源/卡牌/pic/" }; public static string CardBgTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Card/Bg/"; public static string CardBgMd5FileSaveName = "CardBgMd5"; private static string[] CardIconSrcPaths = new string[] { "../../../gfg/正式资源/卡牌/icon/" }; public static string CardIconTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Card/Card/"; public static string CardMd5FileSaveName = "CardMd5"; public static string[] DressUpAnimationSrcPaths = new string[] { $"../../../gfg/ArtProject/{ResPathUtil.ANIMATION_DIR_PATH}/" }; public static string DressUpAnimationTargetPath = $"{ResPathUtil.ANIMATION_DIR_PATH}/"; public static string[] EffectSrcPaths = new string[] { $"../../../gfg/ArtProject/{ResPathUtil.EFFECT_DIR_PATH}/" }; public static string EffectTargetPath = $"{ResPathUtil.EFFECT_DIR_PATH}/"; public static string[] MaterialSrcPaths = new string[] { $"../../../gfg/ArtProject/{ResPathUtil.Material_DIR_PATH}/" }; public static string MaterialTargetPath = $"{ResPathUtil.Material_DIR_PATH}/"; public static string[] TextureSrcPaths = new string[] { $"../../../gfg/ArtProject/{ResPathUtil.Texture_DIR_PATH}/" }; public static string TextureTargetPath = $"{ResPathUtil.Texture_DIR_PATH}/"; public static void Import() { //音乐 EditorUtility.DisplayProgressBar("进度", "正在导入音乐", 1); ImportRes(MusicSrcPaths, MusicTargetPath, MusicMd5FileSaveName); //图鉴图标 EditorUtility.DisplayProgressBar("进度", "正在导入图鉴图标", 1); ImportRes(FieldGuideIconSrcPaths, FieldGuideIconTargetPath, FieldGuideIconMd5FileSaveName); //物品图标 EditorUtility.DisplayProgressBar("进度", "正在导入物品图标", 1); ImportRes(ItemIconSrcPaths, ItemIconTargetPath, IconMd5FileSaveName); // 换装部件 EditorUtility.DisplayProgressBar("进度", "正在裁减换装部件", 1); ImportClipImage(); //NPC头像 EditorUtility.DisplayProgressBar("进度", "正在导入NPC头像", 1); ImportRes(NpcHeadSrcPaths, NpcHeadTargetPath, HeadMd5FileSaveName); //背景 EditorUtility.DisplayProgressBar("进度", "正在导入背景图", 1); ImportRes(BgSrcPaths, BgTargetPath, BgMd5FileSaveName); //卡牌背景 EditorUtility.DisplayProgressBar("进度", "正在导入卡牌背景", 1); ImportRes(CardBgSrcPaths, CardBgTargetPath, CardBgMd5FileSaveName); //卡牌icon EditorUtility.DisplayProgressBar("进度", "正在导入卡牌图标", 1); ImportRes(CardIconSrcPaths, CardIconTargetPath, CardMd5FileSaveName); //动画 EditorUtility.DisplayProgressBar("进度", "正在导入动作动画", 1); ImportFileAndDir(DressUpAnimationSrcPaths, DressUpAnimationTargetPath, new string[] { ".moc3" }); //特效 EditorUtility.DisplayProgressBar("进度", "正在导入特效动画", 1); ImportFileAndDir(EffectSrcPaths, EffectTargetPath); //材质 EditorUtility.DisplayProgressBar("进度", "正在导入特效材质", 1); ImportFileAndDir(MaterialSrcPaths, MaterialTargetPath); //图片 EditorUtility.DisplayProgressBar("进度", "正在导入特效图片", 1); ImportFileAndDir(TextureSrcPaths, TextureTargetPath); //NPC对话立绘 EditorUtility.DisplayProgressBar("进度", "正在导入NPC对话立绘", 1); List files = ImportRes(NpcPicSSrcPaths, NpcPicSTargetPath, PicSMd5FileSaveName); //NPC对战立绘 EditorUtility.DisplayProgressBar("进度", "正在导入NPC对战立绘", 1); files = ImportRes(NpcPicSrcPaths, NpcPicTargetPath, PicFMd5FileSaveName); if (files != null && files.Count > 0) { EditorUtility.DisplayDialog("提示", "有NPC立绘更新,需要设置坐标原点!", "OK", ""); } EditorUtility.ClearProgressBar(); AssetDatabase.Refresh(); Debug.LogWarning("导入美术资源成功!"); } public static List ImportRes(string[] sourceDirs, string targetDir, string saveName) { List files = null; if (!Directory.Exists(targetDir)) { Directory.CreateDirectory(targetDir); } foreach (string dir in sourceDirs) { files = FileUtil.CopyFilesTo(dir, targetDir, saveName, new string[] { ".png", ".jpg", ".mp3" }, ragule); foreach (var file in files) { Debug.LogFormat("更新{0}", file); } } return files; } public static void ImportClipImage() { ImportClip(DressUpSrcPaths, DressUpTargetPath); } public static void ImportClip(string[] sourceDirs, string targetDir) { //换装部件 if (!Directory.Exists(targetDir)) { Directory.CreateDirectory(targetDir); } Dictionary sourceImageMD5 = new Dictionary(); sourceImageMD5 = ImagesClip.ReadSourceImagesMD5(DressUpMd5FileSaveName); foreach (string dir in sourceDirs) { GFGEditor.FileUtil.ForeachFileInDir(dir, null, (string file) => { string fileName = Path.GetFileName(file); if (fileName == "saveMD5" || !FileUtil.CheckStringByRegular(fileName, ragule)) { return; } if (!File.Exists(targetDir + fileName) || !sourceImageMD5.ContainsKey(file) || sourceImageMD5[file] != FileUtil.md5file(file)) { sourceImageMD5[file] = FileUtil.md5file(file); ImagesClip.CutImageWhitePart(file, targetDir, fileName); } }); } ImagesClip.WriteSourceImagesMD5(sourceImageMD5, DressUpMd5FileSaveName); AssetDatabase.Refresh(); } public static List ImportFileAndDir(string[] sourceDirs, string targetDir, string[] excludeExtentions = null) { List files = null; if (!Directory.Exists(targetDir)) { Directory.CreateDirectory(targetDir); } foreach (string dir in sourceDirs) { files = FileUtil.CopyDirsAndFilesInSubDirTo(dir, targetDir, excludeExtentions, ragule); foreach (var file in files) { Debug.LogFormat("更新{0}", file); } } return files; } } }