docs(enemy): 计划同步——未配置配方应显式报错,而非"默认必须可建图"
T13 执行中发现原稿的 DefaultModules_ProduceValidGraph 断言了一条不成立的契约: 建资产到配好模块之间没有任何东西会调 GetOrBuildGraph(),它只在 EnemyAiBrain.Start() 运行时被调,所以"新建资产即报错"的场景不存在。 按该断言把默认改成零配置可建图的模块,会把"必然响亮报错"换成 "建图成功但敌人永不出手、零报错"——方向与第 6 条相反。改为钉相反契约。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2219,6 +2219,19 @@ namespace BaseGames.Tests.EditMode.AI
|
||||
Object.DestroyImmediate(so);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void UnconfiguredRecipe_ThrowsClearError_NotSilentlyInert()
|
||||
{
|
||||
// 新建的空配方默认用 RushEngagement 但尚未配能力。建图时必须**显式报错**,
|
||||
// 而不是静默产出一张"永远不会出手"的图——第 6 条:暴露问题,不掩盖。
|
||||
// 注:策划建完资产到配好模块之间没有任何东西会调 GetOrBuildGraph(),
|
||||
// 它只在 EnemyAiBrain.Start() 运行时被调,所以这里报错不影响编辑期体验。
|
||||
var so = ScriptableObject.CreateInstance<PerceptionRecipeSO>();
|
||||
var ex = Assert.Throws<System.InvalidOperationException>(() => so.GetOrBuildGraph());
|
||||
StringAssert.Contains("RushEngagement", ex.Message);
|
||||
Object.DestroyImmediate(so);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Graph_BehavesLikeE001()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user