obsidian/笔记文件/2.笔记/UGUI整体解决方案-案例篇_第四章.md
2025-03-26 00:02:56 +08:00

3.7 KiB
Raw Blame History

对应雷达顶点的,初始化脚本逻辑

!Pasted image 20240326155625.png

清理顶点逻辑是简单遍历一下顶点合集销毁即可用了foreach遍历所以不能销毁RectTransform本身

!Pasted image 20240326155651.png

实例化新的顶点设置一下父物体再添加RectTransform组件它是有anchoredPosition锚点坐标这个参数可用

!Pasted image 20240326155807.png

计算雷达图顶点对应的锚点坐标值使用了圆周率Pi和Cos、Sin三角函数转换角度得到对应的顶点锚点坐标完成赋值即可

!Pasted image 20240326160011.png

然后,初始化可操作顶点的函数接口,和初始化雷达图顶点,对应的各个逻辑接口,是基本一样的

!Pasted image 20240326160857.png

也是清理重新创建添加RectTransform组件设置父物体然后修改图片引用、颜色、尺寸、缩放等逻辑

!Pasted image 20240326161000.png

可操作点的设置坐标是根据顶点来的而且还有_handlerRadio比例参数相乘

!Pasted image 20240326161056.png

对应的是,每个顶点的比例

!Pasted image 20240326161147.png

如果修改成 1:1比例再重新生成可操作顶点的位置就和雷达图顶点的位置完全重合一致了

!Pasted image 20240326161422.png

运行游戏,拖曳可操作顶点; 可以看到因为顶点合集在AddVerts函数中是和可操作顶点的锚点坐标绑定的所以也会跟着重绘渲染

复习这里;

!Pasted image 20240326161939.png

!Pasted image 20240326161529.png

可操作顶点的拖曳逻辑,也就是配合个体,自适应缩放,修改锚点即可,参考Transform.lossyScale

!Pasted image 20240326161800.png

这个场景是实现了无限滚动列表的相关逻辑如果是默认的Scroll View滑动列表就是直接拖曳多个实体实现的

!Pasted image 20240326170154.png

先取消场景修改

!Pasted image 20240326170455.png

运行游戏,这个是通过逻辑,实现了有限列表实体,实现无限列表的显示效果

!Pasted image 20240326170532.png

其中单个滑动条节点会分成两个不同的逻辑体分别是LoopListItemModel结构是用来存储对应图片和装备描述在构造函数中会有赋值操作

!Pasted image 20240326170703.png

单个滑动条节点另一个就是LoopListItem逻辑实体继承自MonoBehaviour通过_id作为位置标识信息再弄两个获取器是用来获取RectTransform坐标信息Image图片信息

!Pasted image 20240326170814.png

还有装备描述获取器Fuc委托函数是通过LoopListItemModel集合和对应索引获取到对应的节点数据包括图片引用和装备描述具体逻辑后续会解析 Init初始化函数中先各个实例化赋值然后调用ChangeId函数根据子节点在滑动条中的具体位置计算出对应的顺序节点索引赋值即可

!Pasted image 20240326170954.png

对应的具体逻辑根据id索引传参完成位置索引_id的赋值 通过id索引拿到数据合集类对应的图片引用和文本描述数据 SetPos函数是设置该子节点对应的锚点坐标anchoredPosition根据id和实体height高度加上_offset偏移

!Pasted image 20240326171602.png

上述修改Id的函数还调用了检查数据是否合法的函数接口JudgeIdValid也就是判断从总的数据合集容器中通过Equals判断是否等于重新实例化一个数据节点LoopListItemModel去得到合法判定结果

!Pasted image 20240326172420.png