using UnityEngine; using PhxhSDK.Editor.FileChecker.Data; using Gameplay.Level; using PhxhSDK.Phxh; using System.Collections.Generic; namespace PhxhSDK.Editor.FileChecker { /// /// 关卡文件区域检查器 /// 检查关卡json文件的区域配置是否正确 /// public class LevelFileAreaChecker : BaseLevelChecker { public override string CheckerName => "关卡文件区域检查"; public override string RecommendedHandling => "修改关卡文件区域配置"; public override CheckerTabType belongTab => CheckerTabType.Level; public override bool HasAutoProgress => false; private HashSet setId = new(); public override string CheckLevel(string filePath, TextAsset textAsset) { string res = string.Empty; if (null == textAsset) return "文件加载失败"; LevelData levelData = JsonHelper.LoadJsonFromText(textAsset.text); if(null == levelData) return $"关卡json反序列化为{nameof(LevelData)}失败"; setId.Clear(); foreach (var patrolRegionData in levelData.patrolRegionData) { if(!setId.Add(patrolRegionData.id)) res += $"关卡区域id重复,id:{patrolRegionData.id}\n"; } if (res.Equals(string.Empty)) return null; else return res; } } }