AssetArtScannerConfig.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.IO;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. using UnityEditor;
  7. using UnityEngine;
  8. namespace YooAsset.Editor
  9. {
  10. public class AssetArtScannerConfig
  11. {
  12. public class ConfigWrapper
  13. {
  14. /// <summary>
  15. /// 文件签名
  16. /// </summary>
  17. public string FileSign;
  18. /// <summary>
  19. /// 文件版本
  20. /// </summary>
  21. public string FileVersion;
  22. /// <summary>
  23. /// 扫描器列表
  24. /// </summary>
  25. public List<AssetArtScanner> Scanners = new List<AssetArtScanner>();
  26. }
  27. /// <summary>
  28. /// 导入JSON配置文件
  29. /// </summary>
  30. public static void ImportJsonConfig(string filePath)
  31. {
  32. if (File.Exists(filePath) == false)
  33. throw new FileNotFoundException(filePath);
  34. string json = FileUtility.ReadAllText(filePath);
  35. ConfigWrapper setting = JsonUtility.FromJson<ConfigWrapper>(json);
  36. // 检测配置文件的签名
  37. if (setting.FileSign != ScannerDefine.SettingFileSign)
  38. throw new Exception($"导入的配置文件无法识别 : {filePath}");
  39. // 检测配置文件的版本
  40. if (setting.FileVersion != ScannerDefine.SettingFileVersion)
  41. throw new Exception($"配置文件的版本不匹配 : {setting.FileVersion} != {ScannerDefine.SettingFileVersion}");
  42. // 检测配置合法性
  43. HashSet<string> scanGUIDs = new HashSet<string>();
  44. foreach (var sacnner in setting.Scanners)
  45. {
  46. if (scanGUIDs.Contains(sacnner.ScannerGUID))
  47. {
  48. throw new Exception($"Scanner {sacnner.ScannerName} GUID is existed : {sacnner.ScannerGUID} ");
  49. }
  50. else
  51. {
  52. scanGUIDs.Add(sacnner.ScannerGUID);
  53. }
  54. }
  55. AssetArtScannerSettingData.Setting.Scanners = setting.Scanners;
  56. AssetArtScannerSettingData.SaveFile();
  57. }
  58. /// <summary>
  59. /// 导出JSON配置文件
  60. /// </summary>
  61. public static void ExportJsonConfig(string savePath)
  62. {
  63. if (File.Exists(savePath))
  64. File.Delete(savePath);
  65. ConfigWrapper wrapper = new ConfigWrapper();
  66. wrapper.FileSign = ScannerDefine.SettingFileSign;
  67. wrapper.FileVersion = ScannerDefine.SettingFileVersion;
  68. wrapper.Scanners = AssetArtScannerSettingData.Setting.Scanners;
  69. string json = JsonUtility.ToJson(wrapper, true);
  70. FileUtility.WriteAllText(savePath, json);
  71. }
  72. }
  73. }