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

103 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

之前是创建动态图集这个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]]
以上,就是动态打图集的,相关逻辑解析