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

4.4 KiB
Raw Blame History

之前是创建动态图集这个loadPack协程是加载动态图集接口逻辑上也就是通过WWW文件链接的形式加载图集对应的PNG图片和JSON配置文件然后加到mSprites图片容器即可

!Pasted image 20240403144721.png

资源释放函数

!Pasted image 20240403144909.png

在销毁自身的时候,会调用

!Pasted image 20240403144922.png

通过id从mSprites容器提取图片

!Pasted image 20240403144952.png

外部调用动态打包图集的Process接口判断缓存cache是否存在如果存在就调用loadPack加载即可否则就调用createPack动态创建图集

!Pasted image 20240403145253.png

测试场景有两个其中第一个是SelectView场景

!Pasted image 20240403153334.png

回顾一下这些可选的装备组件每个都包含Image图片Button按钮还有RuntimeAltasItem脚本其中包含了当前Image加载的图片资源路径

!Pasted image 20240403153435.png

对应逻辑

!Pasted image 20240403153548.png

它们的父物体挂载着一个SelectView脚本是用来统一管理其中子物体

!Pasted image 20240403153639.png

对应的具体逻辑遍历子物体的Button组件拿到它的RuntimeAltasItem组件如果Action委托_onSelected回调不为空就触发该回调即可 外部通过AddSelectedListener函数对_onSelected进行赋值

!Pasted image 20240403154137.png

被选中的图片,对应这仨组件的修改

!Pasted image 20240403155012.png

其中会挂载对应的逻辑其中包含ShowName枚举作为ID也会有RuntimeAltasItem作为路径存储相关 Init函数对id、图片、RuntimeAltasItem路径存储相关进行赋值初始化即可 SetSprite是设置使能图片AddListener是添加Button按钮的点击监听

!Pasted image 20240403154533.png

!Pasted image 20240403154424.png

GetData函数接口是用来创建一个新的KeyValuePair键值对

!Pasted image 20240403154849.png

被选中节点,对应的父物体,也有挂载一个管理脚本

!Pasted image 20240403155052.png

对应的具体脚本逻辑在Start开始函数中遍历transform通过AddComponent的形式往子物体添加需要的RuntimeAltasItem和ShowItem组件 ShowName枚举作为id也作为传参完成Init初始化然后id自增ShowItem的逻辑体通过AddListener完成子物体按钮的点击监听触发

!Pasted image 20240403155241.png

还有两个公共函数接口第一个是用来外部调用分别是设置当前选中的被选物体节点对应的Sprite图片被选中的RuntimeAltasItem的Path字段完成赋值 第二个GetPaths函数就是通过上述解析的GetData方法完成 ShowName枚举和Path路径 键值对的构建添加到temp字典容器 最后返回这个字典即可;

!Pasted image 20240403155524.png

选择结束后,点击”完成“按钮,也是有对应挂载了一个逻辑

!Pasted image 20240403160019.png

具体逻辑就是调用动态打图集算法的GentatorNewAltas函数完成动态打一个”Test“的图集完成图集之后的complete回调是会调用LoadingView的SwitchScene方法完成场景的切换即可

!Pasted image 20240403160046.png

模拟加载使用的是Loading节点默认情况下是隐藏的

!Pasted image 20240403160252.png

对应具体逻辑,其中加载场景,使用的是异步加载

!Pasted image 20240403160448.png

加载页面初始化函数包含使用Dotween动画插件完成文本的动画显示 剩余的函数就是设置页面显隐、还有调用上述异步加载切换场景的SwitchScene函数接口了

!Pasted image 20240403160525.png

Canvas画布挂载了一个统一管理以上提及所有逻辑脚本的ShowView功能

!Pasted image 20240403155846.png

对应的具体逻辑就是联结选择的SelectView逻辑和被选中的SelectShowView逻辑还有”完成“按钮的Init逻辑初始化也是通过GetComponentInChildren的方式拿到子物体的LoadingView加载逻辑作为传参即可 SetShowItem函数就是当前被选中的实体对应修改sprite图片和path加载路径即可

!Pasted image 20240403155924.png

以上,就是动态打图集的,相关逻辑解析