// 临时调试工具:dump MatchLevelData 里某个关卡的 PlayerSettlements 详情 // 用完可以删 using System.Text; using TH1_Logic.MatchConfig; using UnityEditor; using UnityEngine; namespace Logic.Editor { public static class DumpMapConfigEditor { [MenuItem("Tools/Debug/Dump 关卡2配置(Normal)")] private static void DumpId2() { DumpId(2); } [MenuItem("Tools/Debug/Dump 关卡6配置(Normal)")] private static void DumpId6() { DumpId(6); } [MenuItem("Tools/Debug/Dump 关卡7配置(Normal)")] private static void DumpId7() { DumpId(7); } [MenuItem("Tools/Debug/Dump 全部关卡列表")] private static void DumpAllIds() { MatchConfigManager.Instance.Init(); var data = MatchConfigManager.Instance.LevelData; if (data == null || data.LevelConfigs == null) { Debug.LogError("[DumpMapConfig] LevelData 为空"); return; } var sb = new StringBuilder(); sb.Append("[DumpMapConfig] 全部关卡 id => MatchSettlement / PlayerSettlements.Count:\n"); foreach (var kv in data.LevelConfigs) { var cfg = kv.Value; sb.Append($" id={kv.Key} MatchSettlement={cfg?.MatchSettlement} "); sb.Append($"PlayerSettlements.Count={cfg?.PlayerSettlements?.Count ?? -1}"); sb.Append($" GameMode={cfg?.GameMode}"); sb.Append($" MapName={cfg?.MapName}"); sb.Append('\n'); } Debug.Log(sb.ToString()); } private static void DumpId(uint id) { MatchConfigManager.Instance.Init(); var cfg = MatchConfigManager.Instance.GetMatchConfig(id); if (cfg == null) { Debug.LogError($"[DumpMapConfig] 找不到 id={id} 的关卡"); return; } var sb = new StringBuilder(); sb.Append($"[DumpMapConfig] id={id}\n"); sb.Append($" GameMode={cfg.GameMode}\n"); sb.Append($" MatchSettlement={cfg.MatchSettlement}\n"); sb.Append($" IsCustomMap={cfg.IsCustomMap} MapName={cfg.MapName}\n"); sb.Append($" PlayerCount={cfg.PlayerCount} AIDiff={cfg.AIDiff}\n"); if (cfg.PlayerSettlements == null) { sb.Append(" PlayerSettlements = null ← 这种情况会 fallback 到 OtherDie+Param1=-1\n"); } else { sb.Append($" PlayerSettlements.Count = {cfg.PlayerSettlements.Count}\n"); for (int i = 0; i < cfg.PlayerSettlements.Count; i++) { var s = cfg.PlayerSettlements[i]; if (s == null) { sb.Append($" [{i}] null\n"); continue; } sb.Append($" [{i}] SettlementType={s.SettlementType} Tasks.Count={s.Tasks?.Count ?? -1}\n"); if (s.Tasks != null) { for (int j = 0; j < s.Tasks.Count; j++) { var t = s.Tasks[j]; if (t == null) { sb.Append($" Task[{j}] null\n"); continue; } sb.Append($" Task[{j}] Type={t.TaskType} "); sb.Append($"P1={t.Param1} P2={t.Param2} P3={t.Param3} P4={t.Param4} "); sb.Append($"Order={t.Order}\n"); } } } } Debug.Log(sb.ToString()); } } }