|
|

楼主 |
发表于 2024-8-13 15:45:25
|
显示全部楼层
本帖最后由 vshrd 于 2024-8-13 03:48 PM 编辑
很好的问题,确实问到点子上了.
那么我来回答下,就拿buff/debuff来举例
1.当我们要知道某个单位身上是否有某个特定buff时,虽然对你来说只是单纯用魔风封装好的方法直接请求返回一个ture或false的布尔返回值
但其实我们是需要遍历单位身上所有的buff/debuff,直到最后一个.
才能真正确定单位是否真正持有这个buff/debuff
2.当我们有多个技能都需要进行buff/debuff判定时,
意味着我们单帧里就需要请求多次,每一次就是一个完整遍历.开销就翻了数倍,每次请求就是1倍
3.当我们有不止一个需要监控的目标时,
开销基于之前的基础,再次翻了数倍.几个目标就是几倍
4.当我们一个GCD内每一帧都进行了许多次遍历时,
其实对我们来说真正有实际意义的遍历,就只有真正需要释放技能前的那一次
不然开销又基于之前再次翻数倍,每多一帧就再翻一倍
综上,到这里就已经是在指数级的开销增长了.
那么我们能否实现 一个GCD内,只有真正要准备放技能时,才去遍历一边buff/debuff
并且,把这些数据保存起来.
这样不仅是A技能可以用,对于同样需要进行buff/debuff判断的B技能、C技能、D技能来说
这部分数据全是可以复用的呢?
这是不是意味着我在好几十帧里,对于相同目标来说,仅获取了一次完整的buff/debuff列表信息
|
|