ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Buff相关备注

2022-01-25 20:36:12  阅读:205  来源: 互联网

标签:target bonus 加不上 Buff 移除 类型 相关 buff 备注


buff相关个人备注

bonus:游戏对象指定类型属性值,一般和逻辑有强耦合关系。

最终值 = 基础属性值+offset值

value = (BaseValue+ AddValue)*(1+MulValue)

其中:AddValue = addValue_base + addValue_dynamic

Mulvalue = mulValue_base+mulValue_dynamic

其中BaseValue是默认初始值

addValue_base,mulValue_base是记录在服务器的add类型的target初始值

 

buff:游戏对象持续性的一段逻辑

1.Add 2.Remove 3.Refresh

一:Add:

添加Buff A到 Target 对象上:

能否真正添加进去?

是否移除已有的buff?

如果已经有此buffA,怎么处理?

buff消失类型:时间、触发次数、永久。

 

  1. 如果A可被场景禁止,当前又是场景禁加buff状态;加不上

  2. Target有禁止addBuff的bonus,加不上

  3. AddBuffCD概念。A有CD属性,并且还在CD内。 加不上

  4. Target已有A,进行Refresh叠加规则

  5. 唯一BuffExclusiveID的概念,用于进行Buff之间的交互规则(下面6、7、8条)

  6. Target已有Buff_B并且B禁止添加A 加不上

  7. A移除列表中有buff_B,则移除buff_B

  8. A和B的BuffExclusiveID相同,保留谁?1.什么也不做,A和B无关,加A留B 2.A替换B 3.选择配置level高的 4.A被B屏蔽,A加不上

  9. A消失类型是时间控制,target有影响lifeTime的Bonus属性,,判断两者值的大小,如果A的lifeTime小于reduceCD,则A加不上

  10. A的BuffValue是有意义的,target有影响BuffValue的Bonus属性,则判断受reduceValue影响后BuffValue是否还有意义, 无意义(一般是value<0)则A加不上

 

二:Remove:

buff消失三种类型:时间、触发次数、永久。

统一在fixedUpdate内进行CheckRemove

  1. 时间类型 每个buff进行倒计时

  2. 触发次数类型

 

三:Refresh:

buffLayer叠加规则。会影响到buffValue的值。进而影响具体buffLogic的执行。

 

四:Effect效果:

每个buff实现的logic差异化,有logicType,继承baseBuffLogic。

目前基类BaseBuffLogic针对常用的bonus类型做了layer_bonus处理。

  1. bonus相关比较常用,直接放入到baseBuffLogic内

  2. A加上后执行独立类型logicType的buffLogic类进行 buffEnter Refresh Update Trigger

  3. 如果有BuffTriggerType的话,会被event触发执行Trigger逻辑。 比如:308 BuffControlType类型为 次数类型的,BuffTriggerType=CfgTriggerType.BeHurt TriggerTimes=1 表示为 targert受伤一次就移除这个buff

比如:50014 使用N张卡牌后,给target添加指定buff并移除50014

 

五:统一在BuffManager内管理:

1.target+bufflist(游戏对象映射buffLogicList)

2.BuffManager里进行Update刷新,检测所有target的buffList内的buff是否合法、更新。

 

总结:

1.bonus在进入战斗后伴随游戏对象执行具体逻辑。区分基础值和动态添加。

2.buff的添加是否成功,需要考虑全局场景buffCD、buffCD、buff互斥、buff叠加

  1. buff的移除:时间or触发次数or永久

  2. trigger的概念,执行OnTrigger,进行和其它逻辑进行交互。并在buffTriggerCount记录次数。

  3. layer的概念,执行onRefresh,进行同buff的叠加规则。

  4. exParams扩展参数概念,进行logicType指定可配置逻辑处理

  5. buff的添加、移除最好统一放在Update内,外部的Addbuff和removebuff针对list进行临时操作,在下一帧Update内进行真正的操作。可以避免出现:在Update buff delete内remove其它buff导致出现buffList长度变化,在for循环内的异常。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:target,bonus,加不上,Buff,移除,类型,相关,buff,备注
来源: https://www.cnblogs.com/sun-shadow/p/15844357.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有