| | |
| | | |
| | | public static class BattleDebug |
| | | { |
| | | #if UNITY_EDITOR |
| | | // 每次 Editor 进入 PlayMode 会重置这个 static,初次调用时清空旧文件 |
| | | private static bool _logFileInitialized = false; |
| | | private static string _logFilePath; |
| | | |
| | | private static void EnsureLogFile() |
| | | { |
| | | if (_logFileInitialized) return; |
| | | _logFileInitialized = true; |
| | | try |
| | | { |
| | | string dir = Application.dataPath + "/../BattleReport"; |
| | | if (!System.IO.Directory.Exists(dir)) |
| | | System.IO.Directory.CreateDirectory(dir); |
| | | _logFilePath = dir + "/BattleDebug.log"; |
| | | // 每次启动 PlayMode 清空文件,避免跨次污染 |
| | | System.IO.File.WriteAllText(_logFilePath, $"=== BattleDebug log opened at {System.DateTime.Now:HH:mm:ss.fff} ===\n"); |
| | | } |
| | | catch (System.Exception e) |
| | | { |
| | | Debug.LogWarning("BattleDebug 打开日志文件失败:" + e.Message); |
| | | _logFilePath = null; |
| | | } |
| | | } |
| | | |
| | | private static void WriteToFile(string line) |
| | | { |
| | | EnsureLogFile(); |
| | | if (string.IsNullOrEmpty(_logFilePath)) return; |
| | | try |
| | | { |
| | | System.IO.File.AppendAllText(_logFilePath, |
| | | $"[{Time.frameCount} {Time.realtimeSinceStartup:F3}] " + line + "\n"); |
| | | } |
| | | catch { /* 忽略文件写入异常,别影响逻辑 */ } |
| | | } |
| | | #endif |
| | | |
| | | public static void LogError(string _logMessage) |
| | | { |
| | | #if UNITY_EDITOR |
| | | if (Launch.Instance.isOpenBattleDebug) |
| | | if (Launch.Instance != null && Launch.Instance.isOpenBattleDebug) |
| | | { |
| | | Debug.LogWarning("BattleLog: " + _logMessage); |
| | | if (Launch.Instance.isOpenBattleDebugLogFile) |
| | | WriteToFile(_logMessage); |
| | | } |
| | | #endif |
| | | } |