节点动态合图

游戏开发中,我们可能只想把一个界面里的图文进行合图,那么基于节点的动态合图你可能用的上。比如设置界面、商店界面,你只需在该界面的根节点挂上脚本,那么该界面上的所有可合图的图文都会打到一张图集里。

功能特点

1.支持对特定节点下图文动态合图,通常适用于单个界面,仅让该节点下图文合图,销毁该界面即销毁图集。

2.单个动态合图支持修改高宽,节省内存。

使用方法

1.在项目脚本中的最外层,加上NodeDynaAtlasMgr.init(),不要写在onLoad/start等类函数中。
14241734774076_.pic.jpg

2.在需要合图的界面根节点,挂载上NodeDynaAtlasRoot.ts脚本。设置图集大小,例如2048、1024、512。

14221734704159_.pic.jpg

测试


如图,在弹设置界面之前dc为3,弹设置界面之后dc为4,用Spector.js分析查看

dc1.背景图

dc2.中间图文按钮动态合图,1024x1024

dc3.弹窗界面动态合图,512x512

dc4.Cocos自带FPS

注意:该源码替换了原有的动态合图,只有挂载了NodeDynaAtlasRoot.ts脚本的节点及其子节点才会触发合图;

:point_down: :point_down: :point_down: :point_down: :point_down: :point_down:
链接:Cocos Store

2赞

看起来是个好东西,已经合成图集,和设置了自动图集的图片,还会打到图集吗

尺寸小于你设置的dynamicAtlasManager.maxFrameSize就会

已经打成图集都可以啊,那真是好东西,双旦打折吗?打折我入一份

和我之前设想的功能一致 :+1:,只不过因为原生不行所以没做

原生为什么不行哦?

原生的自动合图是用 C++ 写的,之前只是想改引擎的,如果自己写生成图集的所有代码应该是可以的,我没试过

你这个支持原生吗

动态合图这块源码,原生也是ts写的吧,我就是在上面改的,把数组改成map

你可以打个包测试下

测试过了,生效的

1赞

这个是我之前写的

image
是不是3.6类似这样赋值texture["__oldUploadData"] = texture.uploadData,在原生会不生效哦,得在C++定义。

来来来来一份

买咯

2.4不能用呢

后面我看能不能搞个2.4的版本

看好你…上

大佬牛!已冲!期待大佬更多佳作!!

mark.