AssetArtScannerSetting.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.IO;
  6. using UnityEngine;
  7. using NUnit.Framework.Constraints;
  8. namespace YooAsset.Editor
  9. {
  10. public class AssetArtScannerSetting : ScriptableObject
  11. {
  12. /// <summary>
  13. /// 扫描器列表
  14. /// </summary>
  15. public List<AssetArtScanner> Scanners = new List<AssetArtScanner>();
  16. /// <summary>
  17. /// 开始扫描
  18. /// </summary>
  19. public ScannerResult BeginScan(string scannerGUID)
  20. {
  21. try
  22. {
  23. // 获取扫描器配置
  24. var scanner = GetScanner(scannerGUID);
  25. if (scanner == null)
  26. throw new Exception($"Invalid scanner GUID : {scannerGUID}");
  27. // 检测配置合法性
  28. scanner.CheckConfigError();
  29. // 开始扫描工作
  30. ScanReport report = scanner.RunScanner();
  31. // 检测报告合法性
  32. report.CheckError();
  33. // 保存扫描结果
  34. string saveDirectory = scanner.SaveDirectory;
  35. if (string.IsNullOrEmpty(saveDirectory))
  36. saveDirectory = "Assets/";
  37. string filePath = $"{saveDirectory}/{scanner.ScannerName}_{scanner.ScannerDesc}.json";
  38. ScanReportConfig.ExportJsonConfig(filePath, report);
  39. return new ScannerResult(filePath, report);
  40. }
  41. catch (Exception e)
  42. {
  43. return new ScannerResult(e.Message);
  44. }
  45. }
  46. /// <summary>
  47. /// 获取指定的扫描器
  48. /// </summary>
  49. public AssetArtScanner GetScanner(string scannerGUID)
  50. {
  51. foreach (var scanner in Scanners)
  52. {
  53. if (scanner.ScannerGUID == scannerGUID)
  54. return scanner;
  55. }
  56. Debug.LogWarning($"Not found scanner : {scannerGUID}");
  57. return null;
  58. }
  59. }
  60. }