#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]]