[toc]本篇描述ET中的数值监听组件。 参考:ETbook 5.6数值组件的设计 代码:Model/Module/Numeric文件夹 熊猫在book中讲到了,传统面对对象设计思路中,复杂的数值模板继承带来的难以维护。 我们经常可以看到角色类拥有几十个字段的情况,某个字段发生了变化时设置isDirty = true用于判断是否需要重新计算值。 每个属性受到5个字段影响,与MaxHp关联的5个字段是: MaxHpBase、MaxHpAdd、MaxHpPct、MaxHpFinalAdd、MaxHpFinalPct ET的数值组件用容器存储数值,如果一个角色有数值计算的必要,则给它添加一个数值组件; 相对的,很多NPC没有战斗逻辑,也就不需要添加这个组件。 每个属性类型受到5个字典中的值影响,。

应用场景

有一名战士,更换了一件板甲胸,属性如下: 微光胸甲:防御300,力量15,体力30,智力15,HP上限200,MP上限300,附带技能:微光护罩 微光护罩:生成一个护罩,提供临时生命500点,持续时间5秒,冷却30分钟。 那么,道具设计怎么与数值组件关联的呢? 数值框架 策划根据游戏类型和产品特殊设计决定使用哪种攻防公式: 减法公式、等式、比防公式、(四个元素构成的等式)完美公式 公式方面还有:命中率公式、状态生效概率公式、暴击率公式等,作为增加游戏性的辅助手段。 力量、体力、智力等,根据数值框架会转化为多种攻防数据,或者不相干的游戏性数据。 闪躲:使你完全避免一次物理攻击的概率(无法闪躲来自身后的攻击)。 招架:使用武器招架,使你完全免受一次物理伤害,重置你的普通攻击间隔。 格挡:使用盾牌减少受到的伤害。 攻击力: 防御力: 有两种属性变更思路,一种是重新计算属性值,一种是根据更换的装备/Buff计算差值。这部分的计算逻辑,在人物的穿戴装备方法中定义。 根据一切皆Buff的设计思路,一个装备,用有任意条属性,可以理解为对应数量的Buff。 比如:持续时间无限的300力量Buff 但是,属性来源统计不影响数值组件的存储过程。 微光胸甲有防御属性,提供防御 将关联值进行了分组,缩小了值变脏的范围,比如: 在战斗中,MaxHp表示血量上限,其由5个值影响:MaxHpBase/MaxHpAdd/Max

数值组件的更新机制

数值变化消息分发机制