-
Creator 版本:2.3.3
-
目标平台:Web
-
主要问题: 当使用自动合图后,引用到脚本里并且使用getSpriteFrame 取出一个spriteFrame时,会产生大量请求,比如合图里有100张碎图,产生了100次请求,已经把合图放到静态引用,json 全都选择了合拼仍有问题。
-
重现方式:直接使用demo
AutoAltas.zip (1.7 MB)
Creator 版本:2.3.3
目标平台:Web
主要问题: 当使用自动合图后,引用到脚本里并且使用getSpriteFrame 取出一个spriteFrame时,会产生大量请求,比如合图里有100张碎图,产生了100次请求,已经把合图放到静态引用,json 全都选择了合拼仍有问题。
重现方式:直接使用demo
AutoAltas.zip (1.7 MB)
3.4 也是.
好坑啊, prefab 里引用 atlas.plist, 结果 load prefab 的时候, 产生一百多个请求.
自动图集更坑, 引用了还不能自动加载, getSpriteFrame 返回 null
自动图集的本意是开发阶段用散图,构建时引擎帮你自动合图。如果删掉所有PAC文件之后,项目跑不起来, 那一般是使用姿势不大对。
需要动态加载的,还是用TP打图集吧
是不是编辑器上没把自动图集挂载在节点上?
@ccclass('App')
export class App extends Component
{
start()
{
// 1) TexturePacker plist
// 使用 OK - ⚠️ 但请注意浏览器, 加载了每一个精灵帧信息.json,产生无数个请求
resources.load('test', SpriteAtlas, (e,res)=>
{
console.log("TP loaded");
console.log(res.getSpriteFrame('asdf')); // OK
});
// 2) 自动图集
// 得到一个空壳 SpriteAtlas, 没有任何精灵帧 (似乎 Build 运行是正常的)
resources.load('autoAtlas/auto-atlas', SpriteAtlas, (e,res)=>
{
console.log("autoAtlas loaded");
console.log(res.getSpriteFrame('asdf')); // NULL !
});
}
}
对于 TP 图集, 加载 (代码加载 / prefab引用) 的时候, 会导致请求每一帧的信息.json, 严重影响加载速度
TP的 plist 应该默认转换为一个 json, 而不是拆分成一堆 json
对于 自动图集, 在预览模式下无法加载为有效的 SpriteAtlas, 进而无法调试:
预览模式应该正常处理自动图集
export class Hello extends Component
{
start()
{
// sp.spriteAtlas 已在编辑器中设置 pac 资源
const sp = this.node.getChildByName('asdf').getComponent(Sprite);
// 动态切换帧 - 预览模式 sp 消失, 构建运行正常
sp.changeSpriteFrameFromAtlas('asdf');
// OR
// sp.spriteFrame = sp.spriteAtlas.getSpriteFrame('asdf');
}
}
tp用起来
资源压缩,放远程,loading的时候下载并解压,放缓存里
1.pc上用浏览器直接预览的时候是没有进行碎图合并,构建后才会合成大图。所以电脑上和手机上是不一样的。如果已经构建成了微信小游戏则是已经合图后的。
2.碎图尽量不要放在Resource目录下,因为放在这里就会所有spriteframe都生成一个json。
3.构建的时候有一些spriteframe 相关的选项
所以说这个设计很分裂, 比如我有一个属性:
@type(SpriteAtlas) atlas
在编辑器里,
atlas.getSpriteFrame('xxx'). (要记得构建运行才能测试)于是在每个使用这个组件的地方, 需要特别小心不然就踩坑.
希望将来两种图集能一致化
这种问题显然是技术细节造成的使用体验缺陷, 为什么几年过去了, 引擎/编辑器不去改进, 而期望开发者了解每一个奇奇怪怪的细节呢?
看到官方自动图集的功能,所以迫不及待的替换了texturePacker,结果发现 生成的auto-altas拖拽到属性面板上获取到的是null ,即楼主所说的问题。
希望官方考虑一下啊,不太想在使用cocos creator的同时还有借助一堆外部的工具来操作了。
COCOS的图集功能确实是一个很大的缺点.
这算什么。我们有4-5k的加载。等的很酸爽
你好,这个问题是之前版本的一个 bug,3.5 已经修复过了。
目前使用cocoscreator 3.8.4还是会产生几个k的json加载