任务领奖页 旧逻辑梳理.md 5.2 KB

e#白日梦系统

对应的界面名字:pfb&AnniversaryTaskUI4

![[Pasted image 20221012194131.png]]

对应的脚本就是这个:

CommonTaskAndExchangeUI ![[Pasted image 20221012194356.png]] ![[Pasted image 20221012194356.png]]

它的继承关系是介个:

![[Pasted image 20221012194537.png]]

活动任务的继承关系是介个:

![[Pasted image 20221012194615.png]]

在介个Base类的LateUpdate()更新函数,是酱纸的调用关系:

![[Pasted image 20221012194709.png]]

也就是调用到,这个重写之后的函数:

![[Pasted image 20221012195532.png]]

然后,可以看看介个传参的来源:

![[Pasted image 20221012202926.png]]

可以看到底层的调用,是直接调用的介个:

![[Pasted image 20221012203024.png]]

Arg 这是一个获取器和设置器:

![[Pasted image 20221012203119.png]]

打断点看看,具体是哪里设置的: 整体流程:

![[Pasted image 20221012203142.png]]

追根溯源,可以看到,这个Arg参数,是切换页面的时候,通过index的设置索引拿到的,也就是等于是另一个界面控制的了;

![[Pasted image 20221012203307.png]]

继续追根溯源,数据的来源是这里:

![[Pasted image 20221105164736.png]]

回到领奖界面的逻辑,打断点,点击介个按钮,可以看到,对应的活动id是1901这个,还有一些其他的,活动相关的信息;

![[Pasted image 20221012204059.png]]

![[Pasted image 20221012203944.png]]

这里的俩红点,是这里控制的:

![[Pasted image 20221012204210.png]]

![[Pasted image 20221012204220.png]]

获取红点的逻辑,也就是通过对应的活动id,拿到对应的活动→拿到结束时间→跟当前时间做对比→得到红点显示隐藏的逻辑;

![[Pasted image 20221012204312.png]]

界面上,这里的日期显示:

![[Pasted image 20221012204427.png]]

对应的就是这个逻辑:

![[Pasted image 20221012204448.png]]

在脚本里面,之前也是绑定的了:

![[Pasted image 20221012204638.png]]

这个任务列表相关的UI:

![[Pasted image 20221012211128.png]]

对应的挂载脚本是这个:

![[Pasted image 20221012211320.png]]

如果把对应的逻辑屏蔽:

![[Pasted image 20221017105250.png]]

对应的界面,自然也就会消失

![[Pasted image 20221017105234.png]]

奖励兑换是从服务器拿到回包数据的,对应的活动id是这个: 1901

![[Pasted image 20221019120234.png]]

这个页签下,触发显示的列表:

![[Pasted image 20221013174013.png]]

逻辑是这里控制的: CommonExchangeUI 简要解析看这里:[[CommonExchangeUI简要解析]] 也是可以看到,对应的逻辑屏蔽后,界面原本的滑动列表,也是消失的了;

![[Pasted image 20221013174032.png]]

![[Pasted image 20221017105657.png]]

任务面板的滑动条控制,是介个:

![[Pasted image 20221017110332.png]]

![[Pasted image 20221017110341.png]]

无限滚动列表的逻辑,用的是介个: MixedScrollRect

![[Pasted image 20221017112513.png]]

![[Pasted image 20221017112526.png]]

可以看到,挂载脚本的预制体是介个:

![[Pasted image 20221019101906.png]]

奖励兑换,用的是无限滚动的列表:

![[Pasted image 20221017180058.png]]

无限滚动列表的核心逻辑: 可以看到,也是修改子物体位置的;

![[Pasted image 20221017175417.png]]

实现思想基本一样的实现逻辑,可以参考这个文档:[[无限滚动列表]]

奖励兑换的子控件,对应的逻辑:

![[Pasted image 20221017180701.png]]

如果是这个界面:

![[Pasted image 20221019194425.png]]

UI名字是:pfb&AnniversaryTaskUI

对应的ui类脚本也是这个旧的:

CommonExchangeUI

数据刷新的基类是这个:UIDataBinderBase 在LateUpdate()里面,是可以更新数据;

UpdateImmediately()

![[Pasted image 20221020174226.png]]

继续打断点溯源,是在这个脚本里面的对应方法,更新Arg参数

UIDataTabPage

void UpdateCachedPages()

![[Pasted image 20221020174703.png]]

关于数据获取,打断点可以看到,源头是这里:

ActivityCollectionPageBase

ActivityUtil.TryGetActivitiesInCollection()

![[Pasted image 20221021104243.png]]

打断点可以看到,枚举是用的这个:

![[Pasted image 20221021104515.png]]

![[Pasted image 20221021104548.png]]

如果要创建一个新的数据类,是可以这样创建的:

![[Pasted image 20221021113109.png]]

ANNIVERSARTACTIVITY

![[Pasted image 20221021112942.png]]

随便写一个测试方法:

GetActivity

![[Pasted image 20221021113201.png]]

注意,不要在Init里写逻辑,因为数据池的启动顺序的问题,当前模块数据,选择的是Lobby;

参考其他的,放在OnAttachEventListeners就好

![[Pasted image 20221021113227.png]]

然后,可以在这里声明;

MLobbyDataPool m_MANNIVERSARTACTIVITYDataPool

![[Pasted image 20221021113455.png]]

然后参考其他的,这里实例化类的对象;

![[Pasted image 20221021113542.png]]

奖品兑换的时候,会刷新列表,调用的逻辑是这里:

![[Pasted image 20221104095742.png]]

任务面板刷新,调用逻辑:

![[Pasted image 20221104192216.png]]

奖励面板子控件,用到的数据,对应的面板逻辑位置:

![[Pasted image 20221109141336.png]]