自动上阵功能开发的小结

最近一周中周一体检,周二发了一天低烧,周三才好一些。解决一个自动上阵的问题,截止到昨天晚上,算是最终解决问题。

槽点

这个功能没有案子,很早之前的案子也找不到。所以只能看代码。而我一边晕着看着代码,一边理当中的逻辑。

从功能划分

  • 设计的内容:主将=》副将=》武器。
  • 具体操作:下阵=》界面刷新=》上阵=》界面刷新
  • 对应到数据层:清楚数据=》设置新数据,整个过程都是客户端给服务器发协议,设置的计算是客户端来做。
  • 未知风险:代码哪一些处理;还有数量级上去了是否会出现卡顿;界面在刷新过程中会出现隐藏UI情况,感觉并不是很好。

    旧功能测试

  • 每次执行的结果不稳定。对于一段程序来说很糟糕。一段程序执行的结果,应该是稳定和固定了。即使数量级到达千万级出错的可能也是很小。
  • 目前还缺武器部分开发,武器需求变更,由原来数量1变成5个。
  • 随从是否被上阵执行的结果也并不稳定。
  • 还有间隔时间才能执行。

    代码解读

  • 主将下阵处理,因为设置了不能全部清除的,至少保留一个处理。其他的位置数据。
  • 保留的主将,做副将和武器的清理,到这里所有的清楚数据操作完成
  • 因旧的协议,所有发送协议都是一个协议的返回。并在UI刷新中设置新的上阵
  • 上阵的时候,计算出按规则排列的第一个上阵,设置到第一个位置。保留那个做主将下阵的操作。
  • 设置其他的主将上阵。
  • 设置副将上阵。居然用UI元素是否可以上阵
  • 设置武器上阵,待去修改调整。
  • 刷新界面RefreshUI()调用太多了。

    fixed中

  • 先屏蔽了等待间隔时间的代码
  • 出现了有一个主将时候做一键操作,会有操作没有反应的情况出现。补丁的方法,在只有一个主将的情况下,再次调用清除操作。
  • 主将上阵正常后,副将上阵把一处界面panel.activeSelf屏蔽后,可以正常出现了。看到这段代码,我的内心是*了狗了。准备稍等重构这段代码
  • 武器部分,因需求变更,代码需要重写,因新的武器部分,也是我写的。对于代码调整,一个小时就搞定了。但是筛选出的结果不对。整了好久,发现是装备条件是还需要做类型排除。
  • 接下来做的事情是把UI刷新的调用屏蔽掉一些。调用太多了。
  • 做大量测试,发现在只有一个的时候,有时上阵失败。有点找不出原因,在所有return的地方加Debug.LogError。
  • 找出设置第一个位置的卡为当前可用卡第一个设置数值不成功。
  • UI刷新,下阵的协议分为武器和武将,返回协议只有一条。而在不懂协议本身情况,做了发送协议统计操作。在接受协议回来做数量减少。为0的时候,说明所有下阵协议都返回了。
  • 再去设置新的布阵信息。
  • 第一个位置设置主将。在去设置其他位置的主将,接下来设置副将,设置武器。
  • 测试结果稳定正常

    小结

  • 对于旧代码的return还是要逐个去看的,不知道什么时候return。
  • 对于界面刷新没有必要的时,减少刷新。从用数据决定视图。
  • 服务器对于协议处理是队列处理,所以返回也是,可以用计数作为辅助处理
  • 功能修改最好还是有案子比较好。只有明确了限制条件,才可以正确给出想要的结果
文章目录
  1. 1. 槽点
  2. 2. 从功能划分
  3. 3. 旧功能测试
  4. 4. 代码解读
  5. 5. fixed中
  6. 6. 小结
|