using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; using PhxhSDK.Editor.FileChecker.Data; namespace PhxhSDK.Editor.FileChecker { /// /// 关卡json文件检查器基类 /// public abstract class BaseLevelChecker : BaseFileChecker { public override List fileExtensions => new() { "json" }; public override string CheckerDescription => "关卡JSON文件检查器"; // 这些属性需要在子类中实现 public abstract override string CheckerName { get; } public abstract override string RecommendedHandling { get; } public abstract override CheckerTabType belongTab { get; } protected override void _OnCheckFile(string filePath, TextAsset loadObject) { // 检查文件路径是否包含关卡相关目录 if (!IsLevelFile(filePath)) { return; } var result = CheckLevel(filePath, loadObject); if (result != null) { _PushMsg(result); } } /// /// 检查是否为关卡文件 /// /// 文件路径 /// 是否为关卡文件 protected virtual bool IsLevelFile(string filePath) { string normalizedPath = filePath.Replace("\\", "/"); return normalizedPath.Contains("/Levels/") || normalizedPath.Contains("/LegionLevels/") || (normalizedPath.Contains("/Config/") && Path.GetFileName(filePath).StartsWith("LevelData_")); } /// /// 检查单个关卡文件 /// /// 文件路径 /// 文本资源 /// 如果检查失败,返回失败信息;如果检查通过,返回null public abstract string CheckLevel(string filePath, TextAsset textAsset); } }