123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- using UnityEditor;
- using UnityEngine;
- using System.IO;
- using System;
- using System.Collections.Generic;
- using GFGGame;
- namespace GFGEditor
- {
- public class ImportArtResTool
- {
- public static string ResRootDirName = "正式资源";
- public static string ResRootDirNameDressUp = "正式资源";
- public static string ResRootPath { get { return $"../../../gfg/{ResRootDirName}/"; } }
- public static string ResRootPathDressUp { get { return $"../../../gfg/{ResRootDirNameDressUp}/"; } }
- public static string ragule = @"^[0-9a-zA-Z_.]{1,}$";
- public static string Md5FilePath = "Assets/Res/MD5";
- private static string[] FieldGuideIconSrcPaths { get { return new string[] { ResRootPath + "图鉴/" }; } }
- public static string FieldGuideIconTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/FieldGuide/Icon/";
- public static string FieldGuideIconMd5FileSaveName = "FieldGuideIconMd5";
- private static string[] MusicSrcPaths { get { return new string[] { ResRootPath + "music/" }; } }
- public static string MusicTargetPath = $"{ResPathUtil.MUSIC_DIR_PATH}/";
- public static string MusicMd5FileSaveName = "MusicMd5";
- private static string[] ItemIconSrcPaths { get { return new string[] { ResRootPath + "icon/" }; } }
- public static string ItemIconTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Icon/";
- public static string IconMd5FileSaveName = "IconMd5";
- private static string[] DressUpSrcPaths { get { return new string[] { ResRootPathDressUp + "suit/" }; } }
- public static string DressUpTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/DressUp/";
- public static string DressUpMd5FileSaveName = "DressUpMd5";
- private static string[] NpcHeadSrcPaths { get { return new string[] { ResRootPath + "npc/对战头像/" }; } }
- public static string NpcHeadTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Npc/Head/";
- public static string HeadMd5FileSaveName = "HeadMd5";
- private static string[] NpcPicSrcPaths { get { return new string[] { ResRootPath + "npc/对战立绘/" }; } }
- public static string NpcPicTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Npc/PicF/";
- public static string PicFMd5FileSaveName = "PicFMd5";
- private static string[] NpcPicSSrcPaths { get { return new string[] { ResRootPath + "npc/对话立绘/" }; } }
- public static string NpcPicSTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Npc/PicS/";
- public static string PicSMd5FileSaveName = "PicSMd5";
- private static string[] BgSrcPaths { get { return new string[] { ResRootPathDressUp + "scene/" }; } }
- public static string BgTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/DressUp/";
- public static string BgMd5FileSaveName = "BgMd5";
- private static string[] CardBgSrcPaths { get { return new string[] { ResRootPath + "卡牌/pic/" }; } }
- public static string CardBgTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Card/Bg/";
- public static string CardBgMd5FileSaveName = "CardBgMd5";
- private static string[] CardIconSrcPaths { get { return new string[] { ResRootPath + "卡牌/icon/" }; } }
- public static string CardIconTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Card/Card/";
- public static string CardMd5FileSaveName = "CardMd5";
- private static string[] ActivitySrcPaths { get { return new string[] { ResRootPath + "activity/activity/" }; } }
- public static string ActivityTargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Activity/Activity/";
- public static string ActivityMd5FileSaveName = "ActivityMd5";
- private static string[] ActivityShow1SrcPaths { get { return new string[] { ResRootPath + "activity/show1/" }; } }
- public static string ActivityShow1TargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Activity/Show1/";
- public static string ActivityShow1Md5FileSaveName = "ActivityShow1Md5";
- private static string[] ActivityShow2SrcPaths { get { return new string[] { ResRootPath + "activity/show2/" }; } }
- public static string ActivityShow2TargetPath = $"{ResPathUtil.TEXTURE_DIR_PATH}/Activity/Show2/";
- public static string ActivityShow2Md5FileSaveName = "ActivityShow2Md5";
- public static string[] DressUpAnimationSrcPaths { get { return new string[] { ResRootPathDressUp + $"ArtProject/{ResPathUtil.ANIMATION_DIR_PATH}/" }; } }
- public static string DressUpAnimationTargetPath = $"{ResPathUtil.ANIMATION_DIR_PATH}/";
- public static string[] EffectSrcPaths { get { return new string[] { ResRootPath + $"ArtProject/{ResPathUtil.EFFECT_DIR_PATH}/" }; } }
- public static string EffectTargetPath = $"{ResPathUtil.EFFECT_DIR_PATH}/";
- public static string[] MaterialSrcPaths { get { return new string[] { ResRootPath + $"ArtProject/{ResPathUtil.Material_DIR_PATH}/Effect/" }; } }
- public static string MaterialTargetPath = $"{ResPathUtil.Material_DIR_PATH}/Effect/";
- public static string EffectMaterialMd5FileSaveName = "EffectMaterialMd5";
- public static string[] TextureSrcPaths { get { return new string[] { ResRootPath + $"ArtProject/{ResPathUtil.Texture_DIR_PATH}/Effect/" }; } }
- public static string TextureTargetPath = $"{ResPathUtil.Texture_DIR_PATH}/Effect/";
- public static string EffectTextureMd5FileSaveName = "EffectTextureMd5";
- 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);
- ImportRes(ActivitySrcPaths, ActivityTargetPath, ActivityMd5FileSaveName);
- //活动展示图1
- EditorUtility.DisplayProgressBar("进度", "正在导入活动展示图1", 1);
- ImportRes(ActivityShow1SrcPaths, ActivityShow1TargetPath, ActivityShow1Md5FileSaveName);
- //活动展示图2
- EditorUtility.DisplayProgressBar("进度", "正在导入活动展示图2", 1);
- ImportRes(ActivityShow2SrcPaths, ActivityShow2TargetPath, ActivityShow2Md5FileSaveName);
- //清除冗余动画
- FileUtil.DeleteUnnecessaryAnimation(ImportArtResTool.DressUpAnimationTargetPath, ImportArtResTool.DressUpAnimationSrcPaths[0]);
- FileUtil.DeleteUnnecessaryAnimation(ImportArtResTool.EffectTargetPath, ImportArtResTool.EffectSrcPaths[0]);
- //动画
- EditorUtility.DisplayProgressBar("进度", "正在导入动作动画", 1);
- ImportFileAndDir(DressUpAnimationSrcPaths, DressUpAnimationTargetPath, new string[] { ".moc3" });
- //特效
- EditorUtility.DisplayProgressBar("进度", "正在导入特效动画", 1);
- ImportFileAndDir(EffectSrcPaths, EffectTargetPath);
- //材质
- EditorUtility.DisplayProgressBar("进度", "正在导入特效材质", 1);
- ImportRes(MaterialSrcPaths, MaterialTargetPath, EffectMaterialMd5FileSaveName);
- //图片
- EditorUtility.DisplayProgressBar("进度", "正在导入特效图片", 1);
- ImportRes(TextureSrcPaths, TextureTargetPath, EffectTextureMd5FileSaveName);
- //NPC对话立绘
- EditorUtility.DisplayProgressBar("进度", "正在导入NPC对话立绘", 1);
- List<string> 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<string> ImportRes(string[] sourceDirs, string targetDir, string saveName)
- {
- List<string> 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", ".meta" }, 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<string, string> sourceImageMD5 = new Dictionary<string, string>();
- 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<string> ImportFileAndDir(string[] sourceDirs, string targetDir, string[] excludeExtentions = null)
- {
- List<string> 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;
- }
- }
- }
|