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