【添加】

dev_chengFeng
zhangqiang 2021-08-24 17:30:58 +08:00
parent fe43c56647
commit 5e2b73bc47
1 changed files with 0 additions and 0 deletions

View File

@ -0,0 +1,256 @@
神将培养
相关脚本、预设
神将管理类HeroManager.Lua
成员列表 RoleListPanel.prefab RoleListPanel.Lua
成员详情 RoleInfoPanel.prefab RoleInfoPanel.lua
升级 RoleInfoLayout.prefab RoleInfoLayout.Lua
升星 RoleUpStarLayout.prefab RoleUpStarLayout.Lua
觉醒 RoleAwakelayout.prefab RoleAwakelayout.Lua
传说 RoleStoryLayout.prefab RoleStoryLayout.Lua
天赋 RoleTalentPopup.prefab RoleTalentPopup.Lua
装备 RoleEquipPanel.prefab RoleEquipPanel.Lua
魂印 SoulPrintPanel.prefab SoulPrintPanel.Lua
相关事项
HeroConfig、HeroRankupConfig、HeroRankupGroup、HeroLevelConfig、HeroReturn、
PropertyConfig、PassiveSkillLogicConfig、EquipConfig、EquipSuiteConfig
其中着重说一下以下几张表
HeroConfigRankupConsumeMaterial列 升至星级#槽位#卡组#数量 其中卡组为 HeroRankupGroup的Id,Awaken列 不为空是此神将有觉醒目前只能觉醒1次觉醒是所有技能全换一遍
HeroRankupConfig神将突破 升星 觉醒(和升星一样)的重要表,当神将升到一定等级时,判断 神将是否需要突破或者升星呢 拿初始星级5星神将举例
if HeroRankupConfig.Star == 5 then
if HeroRankupConfig.LimitStar == 神将当前星级 then
if HeroRankupConfig.LimitLevel == 神将当前等级 then
if HeroRankupConfig.Type = 1 then--突破
if 神将当前突破ID < HeroRankupConfig.Id then
当前突破表数据 = HeroRankupConfig
end
elseif HeroRankupConfig.Type = 2 then--升星
if 神将当前升星ID < HeroRankupConfig.Id then
当前升星表数据 = HeroRankupConfig
end
end
end
end
end
此时拿到的数据就是当前神将需要突破或者升星表数据,此操作之后才能继续培养,突 破或者升星之后,会提升等级上限和星级,对应字段分别是 HeroRankupConfig.OpenLevel和 HeroRankupConfig.OpenStar。
HeroRankupGroup: 在升星或者觉醒时HeroConfig的RankupConsumeMaterial列 升至星级#槽位# 卡组#数量 其中卡组为HeroRankupGroup的Id这个表可以确定升星的槽位需要一个什么样 的神将拿初始星级5星神将举例
if HeroRankupGroup.Issame == 1 then
此时需要的神将 = HeroRankupGroup.StarLimit星同名神将
elseif HeroRankupGroup.IsId > 0 then
此时需要的神将 = HeroRankupGroup.StarLimit星HeroRankupGroup.IsId神将
elseif HeroRankupGroup.IsSameClan == 1 then
此时需要的神将 = HeroRankupGroup.StarLimit星同系神将
else
if HeroRankupGroup.Items != nil then
此时需要的神将 = HeroRankupGroup.StarLimit星任意神将 + 万能道具
end
if HeroRankupGroup.Items != nil then
此时需要的神将 = HeroRankupGroup.StarLimit星任意神将 + 专系道具
end
end
PropertyConfigPropertyId列当前界面属性id,PropertyIdInBattle列战斗属性id(设计缺陷 界面和战斗两套属性id容易造成混乱),TargetPropertyId 大于零时,界面显示其对应值, 但是计算战斗力时候会直接作用加成于TargetPropertyId 对应id上。计算战斗力时其实 就是 属性值 * Score 然后全部相加 = 战斗力
神将合成功能和升星的逻辑一样。
待优化项
oo 升级升星界面好多本地神将属性直接在界面就修改了(没有屡清楚值类型和引用类型)。
oo 现在战斗力的计算比较繁重,每一次获取英雄战斗力都是重新一次的计算 HeroManager.CalculateHeroAllProValList里面包含了该英雄的被动、所穿装备、魂印、宝器、法宝等等的属性计算 ,在Git分支 0优化/角色战斗力计算 鑫哥重新写了一下战斗力计算的方式,基本逻辑就是运用观察者模式,去记录每个模块的属性是否发生了变化如果变化了,下次计算的时候会重新计算并记录,没有变动的直接取值计算战斗力即可 但是没有合到现在的分支中因为新作了一些新的计算战斗力的模块没有加进去,但是应该是已经从国外转到国内分支了。
一、(现)战斗力计算基本计算的模块:
英雄本身(属性 + 被动技 + 皮肤属性)装备(属性)法宝(属性 + 被动技)宝器(属性)魂印 (被动技)(最后加默认战力)玩家称号 皮肤 坐骑全队属性编队光环本队属性vip全队属性灵兽全队属性灵兽羁绊全队属性修行系统加成全队属性公会技能全队属性
修行(全队属性)
二、着重介绍下被动技能计算属性是需要注意的点:
1、PassiveSkillLogicConfig 表里EffectiveRange 2 3 为战前生效直接加成属性2 为个 体 3 为团体2、PassiveSkillLogicConfig 表里Type 90 个体加成 94 全体加成 171 对多少级 英雄加成 加成公式1加算 2乘算 3减算 4乘减算乘减算得注意记录的属性值是 属性table不能合并需要计算完其它属性之后再依次计算乘减算3、90 例子 5#0.05#2 第一位对应PropertyConfig表PropertyIdInBattle 第二位 加成 具体数值是百分百或者绝对值看PropertyConfig表 第三位 公式4、94 例子 0.05#17#2 百分比 PropertyConfig表PropertyIdInBattle属性 公式5、171 例子 3#9 100后每增加一级加 PropertyConfig表PropertyIdInBattle属性 3 9值6、129 例子 3#0.1#5#1 第一位英雄元素 第二位 加成具体数值是百分百或者绝对值 看PropertyConfig表 第三位对应PropertyConfig表PropertyIdInBattle 第四位 公式7、前端计算逻辑 先把所有被动技团体加成 和 被动技个人加成都提出来 然后计算英雄 身上所有绝对值 + 所有被动技团体绝对值 + 所有被动技个人加成绝对值8、 * 1 + 英雄身上万分比加成 + 普通团体被动技百分比 + 普通个人被动技百分 比 + 个体等级百分比加成 * 1 - 4乘减算 百分比)
背包
1. 相关脚本、预设
背包管理类BagManager.lua
背包列表: BagPanel.lua BagPanel.prefab
恭喜获得RewardItemPopup.lua RewardItemPopup.prefab
Item详情RewardItemSingleShowPopup.lua RewardItemSingleShowPopup.prefab
装备详情RewardEquipSingleShowPopup.lua RewardEquipSingleShowPopup.prefab
宝器详情RewardTalismanSingleShowPopup.lua RewardTalismanSingleShowPopup.prefab
。。。。。。
1. 实现
常规功能item物品掉落全是后端推送前端只需要接收推送更新数值就行只要有动态id的都需要前端加具体对应数据如神将、灵兽、宝器等
2. 待优化项
oo BagManager.lua所以临时背包相关的内容都可以删掉。
oo 当后端传过来的掉落前端需要展示此时需要转换方法BagManager.GetItemListFromTempBag此方法写的比较繁琐、乱其中好多字段都没有用到或者冗余。
oo Itemview 逻辑混乱,需要整理
灵兽山
相关脚本、预设
灵兽山主界面PokemonMainPanel.lua PokemonMainPanel.prefab
灵兽山列表PokemonListPanel.lua PokemonListPanel.prefab
上阵列表PokemonListPanel_UpWar.lua
灵兽列表PokemonListPanel_List.lua
羁绊列表PokemonListPanel_Fetter.lua
灵兽详情PokemonInfoPanel.lua PokemonInfoPanel.prefab
灵兽升级PokemonInfoPanel_UpLv.lua
灵兽升星PokemonInfoPanel_UpStar.lua
灵兽加成GeneralPopup_PokemonUpZhenAddPro
实现
oo 灵兽升级、升星基本逻辑和神将升级、升星基本一致。
巅峰战赛程、8强、奖励
相关脚本、预设
ArenaTopMatchManager.Lua
。。。。。。
实现
oo 巅峰赛我这边主要其实只是把一局定胜负改成了三局两胜主要是字段process 代表意思是 -1 无记录 0前两场负 1 前两场胜 2 胜 3 负 4 胜负 5 负胜 和 战斗结果 字段 result -1 未开始 0 负 1 胜) 配合给出 三局两胜结果。
oo 还有就是前段会自动播放战斗数据,都是前段自己计算时间播放的战斗回放。
oo 现在巅峰赛的bug 大部分都是后端数据不正确导致前端界面显示不对。有问题一定要让后端先查数据,因为是实时的数据和逻辑,所以前端基本查不到什么问题,除非自身逻辑一直逻辑就问题。
大闹天宫
1. 相关脚本、预设
大闹天宫主界面ExpeditionMainPanel.lua ExpeditionMainPanel.prefab。
管理类ExpeditionManager.lua
节点详情界面ExpeditionMonsterInfoPopup.lua ExpeditionMonsterInfoPopup.prefab
招募节点ExpeditionMonsterInfo_Recruit
商店节点ExpeditionMonsterInfo_Shop
普通怪物节点ExpeditionMonsterInfo_Monster
试炼节点ExpeditionMonsterInfo_Trail
贪婪节点ExpeditionMonsterInfo_Greed
生死簿ExpeditionHeroListResurgencePopup.lua ExpeditionHeroListResurgencePopup.prefab
神將ExpeditionHeroListInfoPopup.lua ExpeditionHeroListInfoPopup.prefab
圣物ExpeditionHalidomPanel.lua ExpeditionHalidomPanel.prefab
实现
oo 主要逻辑全部堆在了ExpeditionMainPanel这个脚本下主要是界面动画比较多人物走动、台子下落、整体list移动等等。
oo 接到后端数据之后,前端进行了重组数据,把零散的数据组成一层三个 或者 两个 这样的一组数据和表现关联在一起了,并且添加了初始层数据,也就是第一层人物默认站落的第一层数据。助战神将和好友一样又做了一套类似好友的数据,进行计算战力等等一系列操作。每次打一小层,后端都会推送下一层的"状态"数据,前端再进行更新界面。
排行榜
相关脚本、预设
主城排行榜RankingListPanel.lua RankingListPanel.prefab
单个排行榜RankingSingleListPanel.lua RankingSingleListPanel.prefab
排行榜管理类RankingManager.lua
实现(原排行榜)
oo 优化了之前的缺陷每个排行榜有个单独的刷新方法,现在所有排行都是用一套接口去接收、刷新数据。
待优化项
在GlobalDefine类里rankKingList配置了所有排行的信息应该把这一套填到表里去 isRankingMainPanelShow这个字段定义的类型有些混乱拿这个字段做了一些特殊判断1 本服 _2 跨服 3_跨服不显示在排行主界面 4 用于十绝阵特殊判断)。
山河社稷图
相关脚本、预设
章节界面FightLevelChapterPanel.Lua FightLevelChapterPanel.prefab
章节详情界面FightLevelSingleChapterPanel.lua FightLevelSingleChapterPanel.prefab
关卡详情界面FightLevelSingleLevelInfoPopup.lua FightLevelSingleLevelInfoPopup.prefab
关卡回放FightLevelInfoPopup_MainLevelBackBattle.lua
主节点详情FightLevelInfoPopup_MainLevel.lua
副节点详情FightLevelInfoPopup_AssistantLevel.lua
主节点奖励FightLevelInfoPopup_MainLevelReward.lua
管理类FightLevelManager.lua
相关实现
oo 表HardStageBuff、HardStage、HardStageReward、HardStageChapter、HardStageCondition
oo 章节上所有的点都是HardStage配出来的。
oo 在FightLevelManager组装了一套界面需要的数据Initialize方法中做了一个静态数据的初始化当后端更新数据时UpdataChapterData又做了数据更新。
待优化项
FightLevelManager类中stateList后端和前端是想通过0-7 以二进制的方式来表现三个星星的状态,但是没有太明白怎么通过运用二进制拿到星星的状态,所以直接写死。
公会副本、公会援助、公会技能、车迟斗法
1. 相关脚本、预设
公会副本GuildTranscriptMainPopup.lua GuildTranscriptMainPopup.prefab
公会副本管理GuildTranscriptManager.Lua
公会援助GuildAidMainPopup.lua GuildAidMainPopup.prefab
我的援助GuildAid_MyAid.lua GeneralPopup_GuildAid.lua
公会援助GuildAid_GuildAid.lua
援助记录GuildAid_AidRecord.lua
车迟斗法GuildCarDelayMainPanel.lua GuildCarDelayMainPanel.prefab
斗法排行奖励GuildCarDelayRewardSortPopup.lua GuildCarDelayRewardSortPopup.prefab
斗法抢夺记录GuildCarDelayLootRecordPopup.lua GuildCarDelayLootRecordPopup.prefab
车迟管理类GuildCarDelayManager.lua
公会技能GuildSkillUpLvPopup.lua GuildSkillUpLvPopup.prefab
公会技能管理GuildSkillManager.lua
2. 实现
常规功能
待优化项
oo 公会副本自从特权刷新改为后端推送就没什么问题了,前端的之前的逻辑也没发现什么问题。
oo 公会援助,援助他人有人嫌弃慢,但是这个全靠后端推送,多人同时援助问题多多,所以只能等后端回复推送更新完之后,才能再次援助。
oo 车迟斗法次数会多扣除,重登次数也扣除了,后期没复现。
oo 公会技能,当公会技能有属性提升时,所有神将的属性都会有修改,升级飘得战力也是编队上的战力提升,感觉此时计算有些重。
锻器阁(装备合成)、恭送神将
1. 相关脚本、预设
锻器阁主界面CompoundPanel.lua CompoundPanel.prefab
装备合成CompoundPanel_Equip.Lua
送神祠主界面ResolvePanel.lua ResolvePanel.prefab
恭送神将Resolve_Dismantle.Lua
2. 实现
装备合成主要是CompoundPanel_Equip.AutoCompound 方法
主要思路:一种装备一种装备的循环检测 金币能合成的数量 与 背包装备能合成的数量 取 最小值 然 后扣除临时消耗道具最后所有装备存在curPosEquips 与 之前背 包 bagPosEquips 作 比较 看合成了什么装备 删除了什么装备 和计算消耗材料,
第二遍看代码自己也有点蒙比较尴尬。
oo 恭送神将时候需要检测神将是否在不可分解的编队上如果在需要依次提示在哪个编队上并跳转进行下阵。逻辑在FormationManager.lua
3. 待优化项
装备合成思路清晰代码有点乱。
罗浮争锋
1. 相关脚本、预设
跨服战主界面JumpServerPanel.lua JumpServerPanel.prefab
罗浮争锋JumpServerHightLadderPanel.lua JumpServerHightLadderPanel.prefab
战斗记录JumpServerHightLadderRecordPopup.lua JumpServerHightLadderRecordPopup.prefab
管理类JumpServerManager.lua
1. 实现
常规功能主要靠后端数据推送更新界面即可。
坐骑
相关脚本、预设
设置界面SettingPanel.lua
坐骑settingPlayerRide.Lua
玩家小人形象PlayerLiveView.lua PlayerLiveView.prefab
实现
Q版人物做了两套动作一套单独站立时的动作 一套是配合坐骑的动作。
应该通过类似动画状态机的形式来做此逻辑会好一些但是通过PlayerLiveView:SetWalkDir方法写死了 一个动画状态机的东西看看能用就用。还有加载和销毁,一定要成对出现。
寻宝
1. 相关脚本、预设
寻宝主界面FindTreasureMainPanel.lua FindTreasureMainPanel.prefab
寻宝详情界面FindTreasureDispatchPanel.lua FindTreasureDispatchPanel.prefab
2. 实现
主要说下选择英雄上阵寻宝的逻辑FindTreasureDispatchPanel.AutoSelectHero 思路:按条件顺序选择 每选择一个英雄检测其他条件是否有满足的 满足跳过 不管能不能派遣都显示,神将选择按照降续的规则去选择。 两个神将上阵就可以满足派遣条件,就选择三个神将上阵。
拍脸
相关脚本、预设
拍脸主界面PatFacePanel.lua PatFacePanel.prefab
拍脸管理类PatFaceManager.lua
实现
LoginPosterConfig
直购礼包拍脸现在全是后端推送的后端推送前端判断不在强制引导、战斗等条件下就直接显示该拍脸如果在强制引导、战斗等条件下前端会将拍脸存到PatFaceManager.backPatFaceAllData中等待调用PatFaceManager.RefreshPatface时再拍脸其余拍脸都是前端自己检测的根据表的数据层层判断的当调用PatFaceManager.GetPatFaceAllDataTabs获得拍脸数据 大于 0 时触发拍脸时前端判断不在强制引导、战斗等条件下就直接显示该拍脸如果在强制引导、战斗等条件下前端会将拍脸存到patFaceAllData中等待调用PatFaceManager.RefreshPatface时再拍脸。
3. 待优化项
当存在多个拍脸需要依次弹出界面时使用迭代器控制拍脸界面打开与关闭,当拍脸界面调用自身关闭界面时,迭代器此时也许也会对界面进行一些操作,导致迭代器打开界面报空。耦合性较强。添加新的拍脸时比较复杂,一直想修改拍脸逻辑也没有好的思想也就没动。
其余
日常任务MissionDailyPanel_Daily、成就任务MissionDailyPanel_Achievement关卡小地图FightSmallChoosePanel世界地图FightMiddleChoosePanel、心魔试炼MonsterCampNewPanel、缥缈之旅JourneyWithWindPanel、邮件MailMainPanel都是一些常规功能开发没有什么大坑基本一看就懂这里不做过多介绍。