5.7 KiB
5.7 KiB
武器熟练度(WeaponDegree)功能说明
本文档由 AI 生成,用于说明武器熟练度的设计与配置。
功能定义
WeaponDegree(武器熟练度)是角色的战斗属性之一,用于减少攻击间隔时间(attackEndTime),从而提升攻击频率。
策划描述:提升武器熟练度可以减少单位作战时的瞄准时间和攻击间隔时间。
⚠️ 实际逻辑:当前代码中武器熟练度只影响攻击间隔时间(attackEndTime),不直接影响瞄准时间(raiseWeaponTime)。
属性定义
在 AttributeType 枚举中定义:
文件:Assets/Code/Scripts/GenCode/Luban/DataTable/ActorCfg/AttributeType.cs
/// <summary>
/// 武器熟练度
/// </summary>
WeaponDegree = 5,
CD缩放公式
武器熟练度通过 CD 缩放系数(cdScale)影响攻击间隔时间。
文件:Assets/Code/Scripts/GamePlay/Fight/Weapon/UnitWeaponConfigDataHelper.cs
/// <summary>
/// 根据武器熟练度计算CD缩放系数
/// </summary>
/// <param name="weaponDegree">武器熟练度</param>
/// <returns>CD缩放系数</returns>
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 缩放系数,用于乘以基础攻击间隔时间
应用方式
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
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