打开BarWindow - 快递接单 - 弹出委托UI - 点击定位 - 返回 在这之后就没有
BarWindow页面UI了,这显然不符合逻辑。
创建一个双端队列,这个队列的大小固定为2
每一个Open、Close的操作都会进行出入队列,我们不用管,根据经验观察,
在打开了bar之后,如果此时此刻Close的是NewMapUI,那么在他之前,就一定会关闭BarWindow。
所以在此就要检查:队列中两个元素是否相邻,如果是,就要把in_bar置为true。
所以在关闭MissionWindow之时,就要打开BarWindow。这样才能保证玩家退出去之后,仍然能够退回BarWindow界面
有一些制作出来的Food,第一次设置了
禁止自动进食的,这个时候没有问题。但是在主动投喂给角色之后,这种菜耗光了之后:
第二次制作出来这种菜的时候,就还是
未禁止状态。这个时候还需要玩家手动设置一遍禁止自动进食这让玩家非常难受,不想再手动挨个点一次。
如果要禁止自动进食,那么同理,就应该是持续上锁状态,玩家主动解锁才能奏效。
也就是说:再一次制作出来这种菜的时候,同样应该是自动上锁状态。
MainUI.AutoEat 这个是一个bool值,用来说明在MainUI里面,是否打开自动进食。现在就是要找到底是谁访问了它?
- Lua里面没法手动构造一个
Food类出来,所以食物数据的来源全在OnEat方法。- 在
OnEat()方法中,手动记录每一个吃过的食物。 - 查询这个食物,是否是
禁止自动进食状态。- 如果是,将食物的ID加入一个有序链表中。
- 如果不是,在有序链表中查找:
- 如果找到了,就移除出去,因为这个时候表示解锁了。不可以存在在这个链表中。
- 在
- 在
OnCook()方法中,对于制作出来的食物result进行遍历:- 如果食物存在于这个链表中,说明是禁用状态,调用
item.Characteristic:Add("ItemBuff_DontAutoEat", 0);方法给他上锁
- 如果食物存在于这个链表中,说明是禁用状态,调用
开关禁用的操作,应该在“仓库管理”这个里面能够找到。
找东西的思路:应该是在MainUI里面开始找,层层往下找。
在WareHouseWindow里面,Items有一个属性叫Characteristic:ContainsKey("ItemBuff_DontAutoEat")
整体思路采用二分方法处理整个过程,算法复杂度为O(logn)。
在交易的时候,会交易高品质的东西
应该要把所有物品进行排序,优先交易低品质的东西才行。
call stack:
- TradeAction -> SynthesisController.SynthesisCost -> ItemManager.DiscardGoods(id, count)
在DiscardGoods中,while循环的逻辑有问题,重写整个方法,重点关注while循环中的迭代逻辑。
旅行者事件,选择了一个选项之后,再退出来的时候,什么都没有了,这显然是不合理的。
坦克营地 - 【旅行者】 - 有很多选项
在OnEvent(旅行者)的时候,就标记flag为true。 在OnEvent(交易废品)的时候,如果前面的flag为true,那么flag2也为true,记录一下零钱的数量。 在OnCloseUI(交易废品)的时候,如果前两个的flag都为true,并且零钱没减少,首先把前两个的都记为false,然后再启动事件【旅行者】
在OnEvent(聊天)的时候,如果前面的flag为true,就标记flag2为true。记录一下时间。 在OnCloseUI(聊天)的时候,如果前面两个flag窦唯true,并且时间没减少,把前两个记为false,然后再启动事件【旅行者】
这个方案有一个问题就是,先关闭NewEventUI,再计算交易金额,再弹出来对话框。所以现在算了是没有效果的
在交易面板中,拖动滑块的问题很恼火,可不可以加:
- 一个按钮,自动选择最合适的数值
- 一个输入框,输入数值以进行选择?
在商店页面中,那个叫PurchasePanel
在交易废品页面中,那个是BargainWindow里面的一个函数OpenxxxPanel,是两个不同的东西。
但是都是私有private的。估计要想其他办法。
- 想清楚、摸清楚
xlua.private_accessible() - 要么重写方法,在更上一层hook进去,让他不要弹出原来的东西。
Esc快捷键功能
针对战斗界面:
- UnderAttackUI
- DialogWindowUI
bug:
- 初始的时候直接跳过小女孩的对话框了,导致根本没法继续玩下去
- 送货问题
酒馆的NPC,把他的东西买完了之后,他这辈子可能都不会刷新更多东西了。
添加一个输入框的功能
这个逻辑,首先是SetChooseList()函数,里面会打开一个base._gos["ChooseAmountPanel"].SetActive(value: **true**);
这个才是最关键的,也是打开滑动栏的核心代码,也就是让他显性。
需要注意的是,它并不是任何一个UI窗口,而是一个UI子模块,仅此而已。
以道路维修的代码为案例
- 增加数字输入框
- 增加搜索框
- 改变商店角色刷新逻辑
本Mod旨在为游戏提供优化,让玩家更舒适、方便地游玩整个游戏,修复了原版游戏中不合理的地方。
[spoiler] [b] 注意,因为本Mod经常发布更新,如果您要更新Mod的话,您可能需要 “取消订阅 - 订阅” 以完成更新。 [/b] [/spoiler]
因为Mod的定位与功能区别于其他功能性Mod,所以主要组成部分也只有Lua脚本,专为优化而生,追求轻量的同时增加游戏体验。 目前修复的地方如下:
-
酒馆UI消失的问题:在酒馆中进行快递接单-打开地图之后,关闭地图时,酒馆的UI会消失。(实际上不应该消失)
-
“禁用自动进食”总是需要重复进行设置的问题:设置了自动进食的食物,在用光后,重新制作出来该食物的时候,仍然需要重新设置一遍禁用自动进食。(Mod会固定进食状态,无需下次手动设置)
-
旅行者事件:触发旅行者事件之后,点击交易,如果这时候不想交易了,再退出来的时候,什么都没有了,这显然是不合理的,应该返回上一层页面。(Mod会记录玩家的选择,在退出来的时候,会根据选择来重新启动旅行者事件)
-
红点闪烁问题:游戏会频繁地触发人物技能点的红点闪烁,Mod通过稍微暴力的方式解决了这个问题,在大多数时候不会有红点闪烁。(即使是有,您可以随意点击一个UI,就可以关闭红点闪烁。)
-
新增Esc快捷键功能:在游戏中,按下Esc键可以快速退出当前界面,Mod会在大多数界面中添加Esc快捷键,方便玩家快速退出。不用手动点击。
-
交易bug:在交易的时候,有可能会顺走您的高品质物品(传奇物品),本Mod重写并修复了原代码中交易部分的逻辑,默认从低品质的物品开始交易,避免被迫交易传奇物品。
-
新增数字输入框:在游戏中,有些地方需要输入数字,比如在酒馆交易的时候。Mod增加了一个数字输入框,可以方便玩家输入数字。
-
新增搜索框:游戏中地图UI进行搜索的时候,提供了一个输入框,便于玩家进行搜索。
-
提示弹窗:在交易的时候,很有可能因为误操作而导致没有选择任何支付用品,进而导致乘员的口才无缘无故-1,Mod提供了一个弹窗,会在第一次提示玩家。
该Mod会随着游戏推进而不断更新(持续维护)