diff --git a/ProjectNLD/AI_Gen_Doc/武器熟练度功能说明.md b/ProjectNLD/AI_Gen_Doc/武器熟练度功能说明.md new file mode 100644 index 00000000000..0bca93fdcce --- /dev/null +++ b/ProjectNLD/AI_Gen_Doc/武器熟练度功能说明.md @@ -0,0 +1,182 @@ +# 武器熟练度(WeaponDegree)功能说明 + +> 本文档由 AI 生成,用于说明武器熟练度的设计与配置。 + +## 功能定义 + +`WeaponDegree`(武器熟练度)是角色的战斗属性之一,用于**减少攻击间隔时间(attackEndTime)**,从而提升攻击频率。 + +**策划描述**:提升武器熟练度可以减少单位作战时的瞄准时间和攻击间隔时间。 + +**⚠️ 实际逻辑**:当前代码中武器熟练度**只影响攻击间隔时间(attackEndTime)**,不直接影响瞄准时间(raiseWeaponTime)。 + +--- + +## 属性定义 + +在 `AttributeType` 枚举中定义: + +**文件**:`Assets/Code/Scripts/GenCode/Luban/DataTable/ActorCfg/AttributeType.cs` + +```csharp +/// +/// 武器熟练度 +/// +WeaponDegree = 5, +``` + +--- + +## CD缩放公式 + +武器熟练度通过 CD 缩放系数(cdScale)影响攻击间隔时间。 + +**文件**:`Assets/Code/Scripts/GamePlay/Fight/Weapon/UnitWeaponConfigDataHelper.cs` + +```csharp +/// +/// 根据武器熟练度计算CD缩放系数 +/// +/// 武器熟练度 +/// CD缩放系数 +private static float CalculateCdScale(float weaponDegree) +{ + var globalDegreeFix = TableManager.Instance.Tables.GlobalFightConfig.FightWeaponDegreeFix; + return (1 - (weaponDegree - globalDegreeFix)) / 2; +} +``` + +### 公式说明 + +``` +cdScale = (1 - (weaponDegree - FightWeaponDegreeFix)) / 2 +``` + +- `weaponDegree`:角色当前的武器熟练度 +- `FightWeaponDegreeFix`:全局配置的熟练度初始值(来自 `GlobalFightConfig` 表) +- `cdScale`:最终的 CD 缩放系数,用于乘以基础攻击间隔时间 + +### 应用方式 + +```csharp +configData.attackEndTime = baseAttackEndTime * cdScale; +``` + +### 数值示例 + +假设 `FightWeaponDegreeFix = 0`: + +| weaponDegree | cdScale | 效果 | +|--------------|---------|------| +| 0 | 0.5 | 攻击间隔缩短 50% | +| 0.5 | 0.25 | 攻击间隔缩短 75% | +| 1 | 0 | 攻击间隔为 0(理论最小值) | +| -1 | 1 | 攻击间隔无缩减 | + +--- + +## 武器熟练度的计算来源 + +武器熟练度由三个养成系统累加计算。 + +**文件**:`Assets/Code/Scripts/GamePlay/UI/ShowAllCharacter/CharacterDataInfo.cs` + +```csharp +public float WeaponDegree(int level = -1, int awakeLevel = -1, int breakLevel = -1) +{ + return GetAttriLevelUp(level, AttributeType.WeaponDegree, awakeLevel) // 等级提升 + + GetAttriAwakeUp((int)awakeLevel, AttributeType.WeaponDegree) // 觉醒提升 + + GetAttriBreakUp((int)breakLevel, AttributeType.WeaponDegree); // 突破提升 +} +``` + +### 三个来源 + +| 来源 | 配置表 | 说明 | +|-----|--------|------| +| 等级提升 | `CharacterLevelUp` | 根据角色等级模板和成长系数计算 | +| 觉醒提升 | `CharacterAwaking` | 从 `AttributeGroup` 字段获取 | +| 突破提升 | `CharacterBreak` | 从 `AttributeGroup` 字段获取 | + +--- + +## 适用的单位类型 + +| 单位类型 | 熟练度来源 | 构建方法 | +|---------|-----------|---------| +| 玩家角色 | `CharacterDataInfo.WeaponDegree()` | `BuildCharacterWeaponFromCultivate()` | +| 怪物 | `DataMonsterClass.WeaponDegree` | `BuildCharacterWeaponFromMonster()` | +| NPC | `DataFightNPC.WeaponDegree` | `BuildCharacterWeaponFromNpc()` | + +**⚠️ 注意**:载具和建筑不使用武器熟练度属性。 + +--- + +## 相关配置表 + +| 配置表 | 说明 | +|-------|------| +| `GlobalFightConfig` | 包含 `FightWeaponDegreeFix` 全局熟练度初始值 | +| `CharacterLevelUp` | 角色升级属性模板,`AttributeGroup` 可包含 WeaponDegree 增量 | +| `CharacterAwaking` | 角色觉醒配置,`AttributeGroup` 可包含 WeaponDegree | +| `CharacterBreak` | 角色突破配置,`AttributeGroup` 可包含 WeaponDegree | +| `MonsterClass` | 怪物配置,直接包含 `WeaponDegree` 字段 | +| `FightNPC` | NPC 配置,直接包含 `WeaponDegree` 字段 | + +--- + +## UI 显示位置 + +| 文件 | 说明 | +|-----|------| +| `UI_CultivateDetailNewController.cs` | 角色培养详情界面,第 195 行 | +| `UI_CultivateChangeController.cs` | 角色培养变更界面,第 1050 行 | + +--- + +## 配置错误可能导致的问题 + +### 1. FightWeaponDegreeFix 配置过高 + +**现象**: +- `cdScale` 计算结果大于 1 +- 攻击间隔时间反而变长 + +**影响**:角色攻击频率降低,战斗手感变慢 + +### 2. WeaponDegree 配置过高 + +**现象**: +- `cdScale` 计算结果为 0 或负数 +- 攻击间隔时间为 0 + +**影响**:可能导致无限攻击或逻辑异常 + +### 3. 养成表未配置 WeaponDegree 属性 + +**现象**: +- 角色升级/觉醒/突破后武器熟练度不变化 +- `GetAttriLevelUp` 等方法返回 0 + +**影响**:养成系统无法提升武器熟练度 + +--- + +## 相关代码文件 + +| 文件路径 | 说明 | +|---------|------| +| `Assets/Code/Scripts/GenCode/Luban/DataTable/ActorCfg/AttributeType.cs` | 属性类型枚举定义 | +| `Assets/Code/Scripts/GenCode/Luban/DataTable/GlobalFightConfig.cs` | 全局战斗配置(FightWeaponDegreeFix) | +| `Assets/Code/Scripts/GamePlay/Fight/Weapon/UnitWeaponConfigDataHelper.cs` | 武器配置构建工具类(CalculateCdScale) | +| `Assets/Code/Scripts/GamePlay/UI/ShowAllCharacter/CharacterDataInfo.cs` | 角色数据信息(WeaponDegree 计算) | +| `Assets/Code/Scripts/GenCode/Luban/DataTable/CharacterCfg/DataCharacterLevelup.cs` | 角色升级配置 | +| `Assets/Code/Scripts/GenCode/Luban/DataTable/CharacterCfg/DataCharacterAwaking.cs` | 角色觉醒配置 | +| `Assets/Code/Scripts/GenCode/Luban/DataTable/CharacterCfg/DataCharacterBreak.cs` | 角色突破配置 | +| `Assets/Code/Scripts/GenCode/Luban/DataTable/MonsterCfg/DataMonsterClass.cs` | 怪物配置 | +| `Assets/Code/Scripts/GenCode/Luban/DataTable/FightCfg/DataFightNPC.cs` | NPC 配置 | + +--- + +*文档生成时间:2026-02-05* +*生成工具:Cursor AI Agent*