ScenarioManager.Awake加try-catch定位根因

This commit is contained in:
tian 2026-06-12 16:08:18 +08:00
parent b40392c64a
commit 59732d2542
2 changed files with 16 additions and 14 deletions

View File

@ -23,11 +23,9 @@ namespace CounterDrone.Unity
System.IO.Directory.Delete(paths.GetFramesDir(), true);
var modelMgr = gameObject.AddComponent<ModelManager>();
modelMgr.SendMessage("Awake", SendMessageOptions.DontRequireReceiver);
Debug.Log("1. ModelManager OK");
var scenarioMgr = gameObject.AddComponent<ScenarioManager>();
scenarioMgr.SendMessage("Awake", SendMessageOptions.DontRequireReceiver);
var task = scenarioMgr.CreateTask("Verification", "");
var taskId = task.Id;
Debug.Log($"2. ScenarioManager OK. Task: {taskId}");
@ -73,7 +71,6 @@ namespace CounterDrone.Unity
Debug.Log($"4. Recommendation: {rec.Best.RecommendedAerosolType}, {rec.Best.Platforms.Count} guns, prob={rec.Best.InterceptProbability:P0}");
var runner = gameObject.AddComponent<SimulationRunner>();
runner.SendMessage("Awake", SendMessageOptions.DontRequireReceiver);
runner.LoadAndStart(taskId);
runner.Engine.TimeScale = 10f;
@ -87,7 +84,6 @@ 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}");
var reportMgr = gameObject.AddComponent<ReportManager>();
reportMgr.SendMessage("Awake", SendMessageOptions.DontRequireReceiver);
detail = scenarioMgr.GetDetail(taskId);
var simEvents = new List<SimEvent>(runner.Engine.Events);
var report = reportMgr.Generate(taskId, detail, simEvents,
@ -96,7 +92,6 @@ namespace CounterDrone.Unity
Debug.Log($"6. Report OK. Exported: {path}");
var replay = gameObject.AddComponent<ReplayController>();
replay.SendMessage("Awake", SendMessageOptions.DontRequireReceiver);
replay.LoadReplay(taskId);
Debug.Log($"7. Replay OK. {replay.TotalFrames} frames, {replay.CurrentFrames.Count} records");

View File

@ -16,15 +16,22 @@ namespace CounterDrone.Unity
void Awake()
{
var paths = new UnityPathProvider();
Debug.Log($"ScenarioManager.Awake: dbPath={paths.GetMainDbPath()}");
var db = new DatabaseManager(paths).OpenMainDb();
_service = new ScenarioService(
new SimTaskRepository(db), new CombatSceneRepository(db),
new ControlZoneRepository(db), new TargetConfigRepository(db),
new EquipmentDeploymentRepository(db), new CloudDispersalRepository(db),
new RoutePlanRepository(db), new WaypointRepository(db));
Debug.Log("ScenarioManager.Awake: OK");
try
{
var paths = new UnityPathProvider();
Debug.Log($"ScenarioManager.Awake: dbPath={paths.GetMainDbPath()}");
var db = new DatabaseManager(paths).OpenMainDb();
_service = new ScenarioService(
new SimTaskRepository(db), new CombatSceneRepository(db),
new ControlZoneRepository(db), new TargetConfigRepository(db),
new EquipmentDeploymentRepository(db), new CloudDispersalRepository(db),
new RoutePlanRepository(db), new WaypointRepository(db));
Debug.Log("ScenarioManager.Awake: OK");
}
catch (System.Exception ex)
{
Debug.LogError($"ScenarioManager.Awake FAILED: {ex}");
}
}
public SimTask CreateTask(string name, string number) => _service.CreateTask(name, number);