feat(ai): BrainGraph 能力接口(ISensor/IMover/ICombatant/IActorVitals)+IAiContext

This commit is contained in:
2026-07-03 13:58:52 +08:00
parent db5bd019f8
commit 7281c5cf6e
10 changed files with 120 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
namespace BaseGames.AI
{
/// <summary>生命体征/受控状态接口(第 3 阶段由 VitalsAdapter 适配敌人状态)。</summary>
public interface IActorVitals
{
bool IsAlive { get; }
/// <summary>物理态是否为 Controlled——决策层仅在此为真时推进(IsControllable 让位门)。</summary>
bool IsControllable { get; }
float HpPercent { get; }
bool HpBelow(float ratio);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9add25f798610d346ad9d65d50775eb4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+15
View File
@@ -0,0 +1,15 @@
namespace BaseGames.AI
{
/// <summary>
/// 传给所有状态回调 / 转换条件的上下文。声明层的 lambda 只能通过它访问实例,
/// 不得闭包捕获具体敌人——这是 lambda 挂在共享 AiGraph 上的前提。
/// </summary>
public interface IAiContext
{
ISensor Sensor { get; }
IMover Mover { get; }
ICombatant Combat { get; }
IActorVitals Vitals { get; }
Blackboard Blackboard { get; }
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b8fe3f9806c1f644ea3da6d244181b98
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+11
View File
@@ -0,0 +1,11 @@
namespace BaseGames.AI
{
/// <summary>战斗/能力调度接口(第 3 阶段由 CombatantAdapter 适配能力注册表)。</summary>
public interface ICombatant
{
bool UseAbility(string abilityId);
bool IsAbilityRunning(string abilityId = null); // null = 任意能力
bool NoAbilityRunning { get; }
bool CanUseAbility(string abilityId);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b61b9cf2b94d7ab4c8e16be8cfc19e8d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+14
View File
@@ -0,0 +1,14 @@
using UnityEngine;
namespace BaseGames.AI
{
/// <summary>移动能力接口(第 3 阶段由 MoverAdapter 适配移动系统)。</summary>
public interface IMover
{
void MoveTo(Vector2 target);
void FacePlayer();
void Stop();
void WalkRandom();
void LookAround();
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bfa62d8e02c8fa644b4c18929b82cbcb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+13
View File
@@ -0,0 +1,13 @@
using UnityEngine;
namespace BaseGames.AI
{
/// <summary>感知能力接口(第 3 阶段由 SensorAdapter 适配感知系统)。</summary>
public interface ISensor
{
bool SeesPlayer();
bool InRange(float range); // 内部用平方距离比较
bool LostFor(float seconds); // 丢失玩家已持续 seconds
Vector2 LastKnown { get; }
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1e1f4a0222db1794ca4f8ef54b5db3b6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: