最近一周中周一体检,周二发了一天低烧,周三才好一些。解决一个自动上阵的问题,截止到昨天晚上,算是最终解决问题。
槽点
这个功能没有案子,很早之前的案子也找不到。所以只能看代码。而我一边晕着看着代码,一边理当中的逻辑。
从功能划分
- 设计的内容:主将=》副将=》武器。
- 具体操作:下阵=》界面刷新=》上阵=》界面刷新
- 对应到数据层:清楚数据=》设置新数据,整个过程都是客户端给服务器发协议,设置的计算是客户端来做。
- 未知风险:代码哪一些处理;还有数量级上去了是否会出现卡顿;界面在刷新过程中会出现隐藏UI情况,感觉并不是很好。
旧功能测试
- 每次执行的结果不稳定。对于一段程序来说很糟糕。一段程序执行的结果,应该是稳定和固定了。即使数量级到达千万级出错的可能也是很小。
- 目前还缺武器部分开发,武器需求变更,由原来数量1变成5个。
- 随从是否被上阵执行的结果也并不稳定。
- 还有间隔时间才能执行。
代码解读
- 主将下阵处理,因为设置了不能全部清除的,至少保留一个处理。其他的位置数据。
- 保留的主将,做副将和武器的清理,到这里所有的清楚数据操作完成
- 因旧的协议,所有发送协议都是一个协议的返回。并在UI刷新中设置新的上阵
- 上阵的时候,计算出按规则排列的第一个上阵,设置到第一个位置。保留那个做主将下阵的操作。
- 设置其他的主将上阵。
- 设置副将上阵。居然用UI元素是否可以上阵
- 设置武器上阵,待去修改调整。
- 刷新界面RefreshUI()调用太多了。
fixed中
- 先屏蔽了等待间隔时间的代码
- 出现了有一个主将时候做一键操作,会有操作没有反应的情况出现。补丁的方法,在只有一个主将的情况下,再次调用清除操作。
- 主将上阵正常后,副将上阵把一处界面panel.activeSelf屏蔽后,可以正常出现了。看到这段代码,我的内心是*了狗了。准备稍等重构这段代码
- 武器部分,因需求变更,代码需要重写,因新的武器部分,也是我写的。对于代码调整,一个小时就搞定了。但是筛选出的结果不对。整了好久,发现是装备条件是还需要做类型排除。
- 接下来做的事情是把UI刷新的调用屏蔽掉一些。调用太多了。
- 做大量测试,发现在只有一个的时候,有时上阵失败。有点找不出原因,在所有return的地方加Debug.LogError。
- 找出设置第一个位置的卡为当前可用卡第一个设置数值不成功。
- UI刷新,下阵的协议分为武器和武将,返回协议只有一条。而在不懂协议本身情况,做了发送协议统计操作。在接受协议回来做数量减少。为0的时候,说明所有下阵协议都返回了。
- 再去设置新的布阵信息。
- 第一个位置设置主将。在去设置其他位置的主将,接下来设置副将,设置武器。
- 测试结果稳定正常
小结
- 对于旧代码的return还是要逐个去看的,不知道什么时候return。
- 对于界面刷新没有必要的时,减少刷新。从用数据决定视图。
- 服务器对于协议处理是队列处理,所以返回也是,可以用计数作为辅助处理
- 功能修改最好还是有案子比较好。只有明确了限制条件,才可以正确给出想要的结果
自动上阵功能开发的小结
本文标题:自动上阵功能开发的小结
文章作者:zhutaorun
发布时间:2017-11-28, 23:35:55
最后更新:2021-09-13, 20:24:49
原始链接:http://zhutaorun.win/2017/11/28/自动上阵功能开发的小结/
许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。