obsidian/笔记文件/2.笔记/任务领奖页 旧逻辑梳理.md
2025-05-21 17:07:14 +08:00

5.2 KiB
Raw Permalink Blame History

#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