134535ck97tkillfkuj8q9.png
  由于历史原因,第一个版本的结算被我改成了图中所示的结构,乍一看好似也很清晰,但是这个结构中存在2个致命的问题:

  1.战斗类型的增加导致代码和UI无法维护

  由于最初的几个结算界面显示是极其相似的,大概涉及到几种固定的类型:文本、可滚动的数字、砸星动画、获得的货币列表、获得的道具列表、人物经验进度条、确定按钮。于是我把所有结算的代码放在了同一个文件下,这样他们就可以共用很多基本相同的函数,稍有变化的地方,就根据战斗类型进行特判,大致的形式会是这样:

 

 

  1. function SetJieSuanXXX()
  2. if BattleType == GameMode_NORMA then
  3. --相应逻辑
  4. elseif BattleType == GameMode_ClimbTower then
  5. --相应逻辑
  6. elseif BattleType == GameMode_Esoterica then
  7. --相应逻辑
  8. end
  9. end

  这里有2个重要的改动:

  1.触发结算界面显示的逻辑改为单线

  2.增加一个结算入口,只负责转发结算需要的数据,根据战斗类型的不同,把数据分发到真正对应的结算界面。每种结算有着自己的代码文件。

  于是今后的卡死再也不用纠结是服务器消息没收到还是剧情没有播放完毕了,只需要看看服务器的消息日志就可以快速定位。增加新的界面也变得简单,只要在入口之下再新建一个文件,来描述新增的结算类型就大功告成,不会跟之前的结算功能互相影响,即使出现问题也只需要修改新增的结算。

  相关阅读游戏编程设计模式——Game Loop

锐亚教育

锐亚教育,游戏开发论坛|游戏制作人|游戏策划|游戏开发|独立游戏|游戏产业|游戏研发|游戏运营| unity|unity3d|unity3d官网|unity3d 教程|金融帝国3|8k8k8k|mcafee8.5i|游戏蛮牛|蛮牛 unity|蛮牛