130 lines
3.7 KiB
C#
130 lines
3.7 KiB
C#
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;
|
|
|
|
/// <summary>
|
|
/// 添加一个异常日志
|
|
/// </summary>
|
|
public void AddBadLog(string log)
|
|
{
|
|
if (string.IsNullOrEmpty(badLog))
|
|
{
|
|
badLog = log;
|
|
}
|
|
else
|
|
{
|
|
badLog += "\n" + log;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static class ResourceCheckControll
|
|
{
|
|
// 异常资源列表
|
|
static List<BadRes> badList;
|
|
|
|
/// <summary>
|
|
/// 执行检查
|
|
/// </summary>
|
|
public static List<BadRes> DoCheck(List<BFMainChecker> checkers)
|
|
{
|
|
badList = new List<BadRes>();
|
|
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));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修正异常资源
|
|
/// </summary>
|
|
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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 提供给命令行调用
|
|
/// </summary>
|
|
public static void CheckResCommandLineMode()
|
|
{
|
|
var checkers = ResourceProcessConfig.GetAllCheckers();
|
|
var badResList = DoCheck(checkers);
|
|
SendCheckMail(badResList);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 发送检查邮件
|
|
/// </summary>
|
|
public static void SendCheckMail(List<BadRes> 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<BadRes> 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;
|
|
}
|
|
}
|
|
}
|