using UnityEngine; using PhxhSDK.Editor.FileChecker.Data; using Gameplay.Level; using PhxhSDK.Phxh; using System.Collections.Generic; namespace PhxhSDK.Editor.FileChecker { /// /// 关卡文件引导检查器 /// 检查关卡json文件的引导配置是否正确 /// public class LevelFileGuideChecker : 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 guideData in levelData.progressGuideDatas) { if(!setId.Add(guideData.id)) res += $"关卡进度引导id重复,id:{guideData.id}\n"; } foreach (var guideData in levelData.setFlagGuideDatas) { if (!setId.Add(guideData.id)) res += $"关卡立标引导id重复,id:{guideData.id}\n"; } foreach (var guideData in levelData.infoPanelGuideDatas) { if (!setId.Add(guideData.id)) res += $"关卡信息版引导id重复,id:{guideData.id}\n"; } if (res.Equals(string.Empty)) return null; else return res; } } }