fix(enemy): 配方校验改用一次性 builder 探测,不再干扰共享图缓存

This commit is contained in:
2026-07-30 08:33:53 +08:00
parent da217af113
commit afcc0b10ee
3 changed files with 25 additions and 9 deletions
@@ -117,14 +117,15 @@ namespace BaseGames.Tests.EditMode.AI
}
[Test]
public void Validate_DoesNotLeaveCachedGraph()
public void Validate_DoesNotDisturbCachedGraph()
{
// 校验期试建的图不能留给运行时——否则改了模块后拿到的是校验时的旧图。
// 校验用一次性 builder 探测,不得动共享缓存——否则同一配方的下一只敌人
// 会拿到不同的图实例,破坏 flyweight 不变量。
var so = MakeE001Recipe();
var before = so.GetOrBuildGraph(); // 先把缓存捂热(不经 AssignModules
Validate(so);
so.AssignModules(new SinglePost(LocomotionMode.Idle),
new RushEngagement("other", RushExit.OnLostTarget));
Assert.AreEqual(SinglePost.Post, so.GetOrBuildGraph().EntryState);
var after = so.GetOrBuildGraph();
Assert.AreSame(before, after); // 校验前后必须是同一张图
Object.DestroyImmediate(so);
}