【AI编码】增加文档
parent
686a411543
commit
dc27102ca7
|
|
@ -0,0 +1,75 @@
|
|||
# ShowAreaId 相关逻辑说明
|
||||
|
||||
## 一、字段定义
|
||||
|
||||
`ShowAreaId` 定义在技能配置表 `DataSkill` 中(Luban 自动生成),类型为 `int`,注释为 **"显示的区域id"**。
|
||||
|
||||
- 非 0 值:引用 Area 配置表中的一个区域形状 ID,通过 `AreaManager.GetCellIndexs(centerCellIndex, areaId)` 可以计算出该区域覆盖的格子列表。
|
||||
- **0 值:表示该技能没有显示区域,不应产生任何表现效果。**
|
||||
|
||||
与之相关的另一个字段是 `InfluenceAreaId`(技能实际生效范围),两者用途不同:
|
||||
- `InfluenceAreaId` —— 技能逻辑上实际生效的区域
|
||||
- `ShowAreaId` —— 技能在表现层用于展示/预览的区域
|
||||
|
||||
## 二、使用场景(共 5 处)
|
||||
|
||||
### 1. 技能释放时的地面高亮 —— 角色
|
||||
|
||||
**文件**:`FullStateSkill.cs` → `_PlayGroundEffect()`
|
||||
|
||||
**用途**:角色释放技能时,在目标格子上显示地面高亮特效。
|
||||
|
||||
**条件链**:`needSkillCover == true` → `IsEmitToFloor == true` → `ShowAreaId != 0` → 创建高亮
|
||||
|
||||
### 2. 技能释放时的地面高亮 —— 载具
|
||||
|
||||
**文件**:`VehicleStateSkill.cs` → `_PlayGroundEffect()`
|
||||
|
||||
**用途**:与上面相同,但作用于载具单位。逻辑一致。
|
||||
|
||||
### 3. 技能释放检查 —— 玩家选择区域
|
||||
|
||||
**文件**:`SkillAreaSelector2.cs` → `_CheckShowAreaCellContainsSide()`
|
||||
|
||||
**用途**:在玩家选择技能释放位置时,检查以某格子为中心、`ShowAreaId` 定义的区域范围内是否包含指定阵营的单位。用于 `EReleaseCheckType.AreaContainsEnemy` 和 `AreaContainsSelfSide` 两种释放检查类型。
|
||||
|
||||
**ShowAreaId 为 0 时**:返回 `false`,意味着该格子不满足释放条件,不会被加入可选列表。
|
||||
|
||||
### 4. 技能释放检查 —— AI 决策
|
||||
|
||||
**文件**:`AISkillCheck.cs` → `_CheckShowAreaCellContainsSide()`
|
||||
|
||||
**用途**:与上面相同的逻辑,但用于 AI 自动决策时判断技能释放位置。逻辑完全一致。
|
||||
|
||||
### 5. 暂停状态下缓存技能区域显示
|
||||
|
||||
**文件**:`InPauseCacheSkillArea.cs` → `_ShowCachedSkillArea()`
|
||||
|
||||
**用途**:在战斗暂停时,对已缓存的技能释放位置,通过 `GroundPlaneManager` 在地面上显示技能影响区域的预览。
|
||||
|
||||
**ShowAreaId 为 0 时**:打印警告日志并跳过,不显示任何区域。
|
||||
|
||||
## 三、核心调用链路
|
||||
|
||||
```
|
||||
ShowAreaId
|
||||
│
|
||||
├─ 表现层(地面高亮)
|
||||
│ ├─ FullStateSkill._PlayGroundEffect() ── 角色技能释放时
|
||||
│ ├─ VehicleStateSkill._PlayGroundEffect() ── 载具技能释放时
|
||||
│ └─ InPauseCacheSkillArea._ShowCachedSkillArea() ── 暂停时预览缓存技能
|
||||
│
|
||||
└─ 逻辑层(释放条件检查)
|
||||
├─ SkillAreaSelector2._CheckShowAreaCellContainsSide() ── 玩家选择释放位置
|
||||
└─ AISkillCheck._CheckShowAreaCellContainsSide() ── AI 选择释放位置
|
||||
```
|
||||
|
||||
## 四、ShowAreaId == 0 的统一规则
|
||||
|
||||
| 场景 | ShowAreaId == 0 时行为 |
|
||||
|------|----------------------|
|
||||
| 角色地面高亮 | 跳过,不创建高亮特效 |
|
||||
| 载具地面高亮 | 跳过,不创建高亮特效 |
|
||||
| 暂停缓存预览 | 跳过,不显示区域预览 |
|
||||
| 玩家释放检查 | 返回 `false`,该格子不满足释放条件 |
|
||||
| AI 释放检查 | 返回 `false`,该格子不满足释放条件 |
|
||||
Loading…
Reference in New Issue