using System; using System.IO; using System.Collections; using System.Collections.Generic; using System.Text; using UnityEditor; using UnityEngine; namespace YooAsset.Editor { public class AssetArtScannerConfig { public class ConfigWrapper { /// /// 文件签名 /// public string FileSign; /// /// 文件版本 /// public string FileVersion; /// /// 扫描器列表 /// public List Scanners = new List(); } /// /// 导入JSON配置文件 /// public static void ImportJsonConfig(string filePath) { if (File.Exists(filePath) == false) throw new FileNotFoundException(filePath); string json = FileUtility.ReadAllText(filePath); ConfigWrapper setting = JsonUtility.FromJson(json); // 检测配置文件的签名 if (setting.FileSign != ScannerDefine.SettingFileSign) throw new Exception($"导入的配置文件无法识别 : {filePath}"); // 检测配置文件的版本 if (setting.FileVersion != ScannerDefine.SettingFileVersion) throw new Exception($"配置文件的版本不匹配 : {setting.FileVersion} != {ScannerDefine.SettingFileVersion}"); // 检测配置合法性 HashSet scanGUIDs = new HashSet(); foreach (var sacnner in setting.Scanners) { if (scanGUIDs.Contains(sacnner.ScannerGUID)) { throw new Exception($"Scanner {sacnner.ScannerName} GUID is existed : {sacnner.ScannerGUID} "); } else { scanGUIDs.Add(sacnner.ScannerGUID); } } AssetArtScannerSettingData.Setting.Scanners = setting.Scanners; AssetArtScannerSettingData.SaveFile(); } /// /// 导出JSON配置文件 /// public static void ExportJsonConfig(string savePath) { if (File.Exists(savePath)) File.Delete(savePath); ConfigWrapper wrapper = new ConfigWrapper(); wrapper.FileSign = ScannerDefine.SettingFileSign; wrapper.FileVersion = ScannerDefine.SettingFileVersion; wrapper.Scanners = AssetArtScannerSettingData.Setting.Scanners; string json = JsonUtility.ToJson(wrapper, true); FileUtility.WriteAllText(savePath, json); } } }