fix: Edit模式下AddComponent不调Awake, 显式SendMessage

This commit is contained in:
tian 2026-06-12 16:11:51 +08:00
parent 59732d2542
commit 1eba842487

View File

@ -23,9 +23,11 @@ namespace CounterDrone.Unity
System.IO.Directory.Delete(paths.GetFramesDir(), true); System.IO.Directory.Delete(paths.GetFramesDir(), true);
var modelMgr = gameObject.AddComponent<ModelManager>(); var modelMgr = gameObject.AddComponent<ModelManager>();
modelMgr.SendMessage("Awake", SendMessageOptions.DontRequireReceiver);
Debug.Log("1. ModelManager OK"); Debug.Log("1. ModelManager OK");
var scenarioMgr = gameObject.AddComponent<ScenarioManager>(); var scenarioMgr = gameObject.AddComponent<ScenarioManager>();
scenarioMgr.SendMessage("Awake", SendMessageOptions.DontRequireReceiver);
var task = scenarioMgr.CreateTask("Verification", ""); var task = scenarioMgr.CreateTask("Verification", "");
var taskId = task.Id; var taskId = task.Id;
Debug.Log($"2. ScenarioManager OK. Task: {taskId}"); Debug.Log($"2. ScenarioManager OK. Task: {taskId}");
@ -84,6 +86,7 @@ namespace CounterDrone.Unity
Debug.Log($"5. Simulation done. State={runner.Engine.State}, DroneStatus={runner.Engine.Drones[0].Status}, HP={runner.Engine.Drones[0].Hp:F2}, Frames={frameCount}"); Debug.Log($"5. Simulation done. State={runner.Engine.State}, DroneStatus={runner.Engine.Drones[0].Status}, HP={runner.Engine.Drones[0].Hp:F2}, Frames={frameCount}");
var reportMgr = gameObject.AddComponent<ReportManager>(); var reportMgr = gameObject.AddComponent<ReportManager>();
reportMgr.SendMessage("Awake", SendMessageOptions.DontRequireReceiver);
detail = scenarioMgr.GetDetail(taskId); detail = scenarioMgr.GetDetail(taskId);
var simEvents = new List<SimEvent>(runner.Engine.Events); var simEvents = new List<SimEvent>(runner.Engine.Events);
var report = reportMgr.Generate(taskId, detail, simEvents, var report = reportMgr.Generate(taskId, detail, simEvents,
@ -92,6 +95,7 @@ namespace CounterDrone.Unity
Debug.Log($"6. Report OK. Exported: {path}"); Debug.Log($"6. Report OK. Exported: {path}");
var replay = gameObject.AddComponent<ReplayController>(); var replay = gameObject.AddComponent<ReplayController>();
replay.SendMessage("Awake", SendMessageOptions.DontRequireReceiver);
replay.LoadReplay(taskId); replay.LoadReplay(taskId);
Debug.Log($"7. Replay OK. {replay.TotalFrames} frames, {replay.CurrentFrames.Count} records"); Debug.Log($"7. Replay OK. {replay.TotalFrames} frames, {replay.CurrentFrames.Count} records");