5.2 KiB
#unity/白日梦
对应的界面名字:pfb&AnniversaryTaskUI4
对应的脚本就是这个:
它的继承关系是介个:
活动任务的继承关系是介个:
在介个Base类的LateUpdate()更新函数,是酱纸的调用关系:
也就是调用到,这个重写之后的函数:
然后,可以看看介个传参的来源:
可以看到底层的调用,是直接调用的介个:
Arg 这是一个获取器和设置器:
打断点看看,具体是哪里设置的: 整体流程:
追根溯源,可以看到,这个Arg参数,是切换页面的时候,通过index的设置索引拿到的,也就是等于是另一个界面控制的了;
继续追根溯源,数据的来源是这里:
回到领奖界面的逻辑,打断点,点击介个按钮,可以看到,对应的活动id是1901这个,还有一些其他的,活动相关的信息;
这里的俩红点,是这里控制的:
获取红点的逻辑,也就是通过对应的活动id,拿到对应的活动→拿到结束时间→跟当前时间做对比→得到红点显示隐藏的逻辑;
界面上,这里的日期显示:
对应的就是这个逻辑:
在脚本里面,之前也是绑定的了:
这个任务列表相关的UI:
对应的挂载脚本是这个:
如果把对应的逻辑屏蔽:
对应的界面,自然也就会消失
奖励兑换是从服务器拿到回包数据的,对应的活动id是这个: 1901
这个页签下,触发显示的列表:
逻辑是这里控制的: CommonExchangeUI 简要解析看这里:CommonExchangeUI简要解析 也是可以看到,对应的逻辑屏蔽后,界面原本的滑动列表,也是消失的了;
任务面板的滑动条控制,是介个:
无限滚动列表的逻辑,用的是介个: MixedScrollRect
可以看到,挂载脚本的预制体是介个:
奖励兑换,用的是无限滚动的列表:
无限滚动列表的核心逻辑: 可以看到,也是修改子物体位置的;
实现思想基本一样的实现逻辑,可以参考这个文档:无限滚动列表
奖励兑换的子控件,对应的逻辑:
如果是这个界面:
UI名字是:pfb&AnniversaryTaskUI
对应的ui类脚本也是这个旧的:
CommonExchangeUI
数据刷新的基类是这个:UIDataBinderBase 在LateUpdate()里面,是可以更新数据;
UpdateImmediately()
继续打断点溯源,是在这个脚本里面的对应方法,更新Arg参数
UIDataTabPage
void UpdateCachedPages()
关于数据获取,打断点可以看到,源头是这里:
ActivityCollectionPageBase
ActivityUtil.TryGetActivitiesInCollection()
打断点可以看到,枚举是用的这个:
如果要创建一个新的数据类,是可以这样创建的:
ANNIVERSARTACTIVITY
随便写一个测试方法:
GetActivity
注意,不要在Init里写逻辑,因为数据池的启动顺序的问题,当前模块数据,选择的是Lobby;
参考其他的,放在OnAttachEventListeners就好
然后,可以在这里声明;
MLobbyDataPool m_MANNIVERSARTACTIVITYDataPool
然后参考其他的,这里实例化类的对象;
奖品兑换的时候,会刷新列表,调用的逻辑是这里:
任务面板刷新,调用逻辑:
奖励面板子控件,用到的数据,对应的面板逻辑位置: