feat(ai): BrainBuilder.DeclareState——重复声明状态即报错,防模块间同名静默覆盖
State() 仍保持宽松(有则取),用于给已声明的态挂边;DeclareState() 只用于 首次声明行为,重复声明同名状态会抛异常。AiStateFragments 的四个建态原语 (Locomotion/Ability/AbilityOnce/Terminal)改用 DeclareState。同时给 IEngagementModule/IDeathModule/IUnawareModule 补充不变量说明。
This commit is contained in:
@@ -12,6 +12,10 @@ namespace BaseGames.Enemies
|
||||
///
|
||||
/// 实现注意:模块会经 [SerializeReference] 反序列化,构造函数不保证被调用。
|
||||
/// 不要在构造函数里预计算缓存或做参数校验——缓存用惰性属性,校验放 Build()。
|
||||
///
|
||||
/// 为何本层只需单阶段 Build(而未发现层要拆 Declare/Link):骨架只把边**指向**
|
||||
/// EntryState,从不在本模块自己的状态上挂边,所以 Build 内声明的边不会被外部抢占。
|
||||
/// 将来若修改骨架、使其向交战态挂边,必须先回来重新审视本契约。
|
||||
/// </summary>
|
||||
public interface IEngagementModule
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user