怎么使用自动图集中的资源

热更新不会整个大文件都更新。热更新可能只会更新一张,结果整个图集都要一起更新……
加载效率倒是真的。不过这些都是充话费送的啦~ 你不喜欢我们帮你充话费你自己充也可以的。

cocos很强大,看到自动图集也是比较惊喜,所以就用了,我只是说下我的想法,也许可以帮助引擎改进,但也可能说错了,如果说错了,你就说这样不好就OK了,说着说着,我觉得我可以收声了。

嗯嗯,没事,大家都可以说


说了才会越做越好

1赞

谢谢,辛苦了,自动图集用来代替原来打包工具,本来是为了方便,为了更加优雅,现在加载自动图集的方式不够优雅,我都全回退了代码,即使花了差不多半天时间去研究和实现,现在比原来自己打包不方便的地方是,原来自己打包的图集是可以很方便地拖到一个组件上,让场景加载时onLoad前就加载好,其实只要实现自动图集可以很方便地拖到类似cc.SpriteAtlas变量上就行了。

1赞

我刚重新写了目前最优雅的方案,我很不情愿地下载了TexturePacker自己打了个包,拖到cc.SpriteAtlas上面,然后就达到了我的目的了,自动图集很让人惊喜,但如果可以完全脱离TexturePacker那就应该多好,像cocostudio以前已经基本不需要再使用TexturePacker了,我一共写了三种做法,最后还是用了这个我不太情愿的方法,但代码至少让人看着觉得优雅了,没有那么多哆嗦的代码。期待自动图集完全取代TexturePacker的那天。

如果可将一个资源文件夹拖到一个cc.SpriteAtlas,将一个文件夹拖到一个cc.SpriteFrame数组上就会更加酷了。

@jare 应该可以考虑建一个 cc.AutoAtlas 这样的 asset ?

2赞

我觉得干脆建一个 cc.FolderAsset 算了,整个文件夹都能拖进去…… 内部维护一个 assets 字典。如果有子目录,字典中也会包含子 cc.FolderAsset 实例

1赞

回头想想,我还是觉得这个不适合,如果太多,会增加fire文件的大小不只一点点,降低加载场景的效率。

这个感觉可行,但也有问题,如果这个文件夹里面包含粒子,合图,场景,图片,文件夹,文本等,怎么处理?要做的事可能太多了。

所以我个人建议先实现这个,或者不另起名,就用cc.SpriteAtlas,就行了,可以比较快地实现,用名字查找,另外,U3D为了加强字符串作为key的效率,是会将字符串转为内部唯一数字在内部进行存储和计算的,不知道cocos有没有类似提升字符串作为key的优化。

你想得太复杂了,用户自己会拆分目录的

唯一数字一样是字符串,性能上没有大的区别

辛苦了,坐等新版本,不过如果是这样,我建议个新名字叫cc.AltasAsset.

Mark 关注此话题

搜到 的,我的需求类似,需要用代码动态替换UI中的图,以前是用texture pack的plist,可以动态载入整个plist然后通过名字获取spriteFrame,然后替换上。用了自动图集后不知道怎么做了,因为没有方法可以整个载入自动图集,然后用名字找到里面的sprite Frame
请问现在可以了吗?
@jare

放到 resources 目录下,用 loadRes 加载即可

autoatlas可以拖到编辑器属性但是里面是空的。可以拖到属性面板的时候高兴坏了,结果 里面是空的:joy:

抱歉,自动图集现在预览时,里面确实是空的,这算是 bug。不过构建发布后,里面就不为空了。

原来我以前在这个论坛讨论这么热烈,相同需求的人还不少,应该算是做了点贡献了.

1赞