using System; using UnityEngine; using UnityEditor; using System.Collections.Generic; using System.IO; using System.Text; namespace BFEditor.Resource { public class BadRes { public string assetPath; public string badLog; /// /// 添加一个异常日志 /// public void AddBadLog(string log) { if (string.IsNullOrEmpty(badLog)) { badLog = log; } else { badLog += "\n" + log; } } } public static class ResourceCheckControll { // 异常资源列表 static List badList; /// /// 执行检查 /// public static List DoCheck(List checkers) { badList = new List(); foreach (var checker in checkers) { checker.DoCheck(); } return badList; } public static void AddBadRes(BadRes badRes) { badList.Add(badRes); Debug.LogWarning(string.Format("检查不通过 path {0}, log {1}", badRes.assetPath, badRes.badLog)); } /// /// 修正异常资源 /// public static void FixBadRes(BadRes badRes) { var importer = ResourceProcessConfig.GetFixImporter(badRes.assetPath); if (importer != null) { importer.DoImport(badRes.assetPath, true); } else { Debug.LogWarning("没有找的对应的importer"); } AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } /// /// 提供给命令行调用 /// public static void CheckResCommandLineMode() { var checkers = ResourceProcessConfig.GetAllCheckers(); var badResList = DoCheck(checkers); SendCheckMail(badResList); } /// /// 发送检查邮件 /// public static void SendCheckMail(List list) { var mailDefaultCfg = new MailSendConfig(); mailDefaultCfg.smtpAddress = "smtphm.qiye.163.com"; mailDefaultCfg.port = 25; mailDefaultCfg.sender = ResourceProcessConfig.BF_CLIENT_MAIL; mailDefaultCfg.senderPassword = ResourceProcessConfig.BF_CLIENT_MAIL_PASSWARD; mailDefaultCfg.receivers = new string[] { "xi_chen@juzugame.com", }; var path = WriteLogToFile(list); var content = File.ReadAllText(path); BFEditorUtils.SendMail(mailDefaultCfg, "BF资源检查提醒", content); } static string WriteLogToFile(List list) { var fileDir = Application.dataPath.Remove(Application.dataPath.Length - 6, 6) + "Log"; if (!Directory.Exists(fileDir)) { Directory.CreateDirectory(fileDir); } var filePath = fileDir + "/" + "资源检查_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".txt"; var sb = new StringBuilder(); if (list.Count == 0) { sb.Append("没有异常资源"); } else { for (int i = 0; i < list.Count; i++) { sb.AppendLine(string.Format("resource path: {0}, log : \n {1}", list[i].assetPath, list[i].badLog)); } } BFEditorUtils.CreateFile(filePath, sb.ToString()); return filePath; } } }