【添加】
parent
fe43c56647
commit
5e2b73bc47
|
@ -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
|
||||
其中着重说一下以下几张表
|
||||
HeroConfig:RankupConsumeMaterial列 升至星级#槽位#卡组#数量 其中卡组为 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
|
||||
PropertyConfig:PropertyId列当前界面属性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)都是一些常规功能开发,没有什么大坑,基本一看就懂,这里不做过多介绍。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue