#unity/白日梦
对应的界面名字: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]]