求助求助 微信小游戏到底怎么用astc

大佬。你们astc文件大小跟图片大小对比是什么情况。比如1mb图片转成astc格式文件时多大。然后astc进行gzip压缩又变成了多大


gzip后的astc会比图片稍微小一点点,没压缩的会比图片大不少,论坛之前的帖子有人发过详细的数据

麻烦问下,微信小游戏上upzip效率怎么样,是不是无感的,我们项目有大量的图片,担心每次unzip会影响效率。另外spine图和fnt也可以astc吗

口径一样么, astc和图片都gzip了?

图片没有gzip,cdn开启gzip传输就行了

在我们项目里面基本是无感的,你可以自己增加打印看下解压的耗时,spine和fnt也可以使用压缩纹理

我的意思是基于 astc gzip后和图片用cdn gzip 大小比较是什么情况

请教 这个是个什么实现过程?要改CCC的工具源码?

首先写个插件在构建之后实现文件的gzip,然后看下引擎的astc解析源码,自己增加一个ungzip数据的流程
image ,压缩和解压我用的pako库

多谢解答啊,
第一步插件的工作 这个能实现,第二步呢parser.js里我试着看了看,因为引擎已经支持ASTC了 有了parseASTCTex 应该就是这里的工作了吧,
return function (file, options, onComplete) 里处理解析文件头 和返回astcData的功能,
那么我猜测 是不是比如在return function起始位置那里 加入unzip的处理 然后把unzip后的数据 继续传给后面的流程 就是了,等于加了一个中间解析ZIP的工作 就是了,
当然这是我目前的理解啊 ,有不一致的地方 请指点一下再

大概是这么个流程

改了这里 编译了引擎也 ,定制也应该是成功了,用的是安卓系统测试
目前是先用正常的ASTC格式文件测试 项目包里只有某个图片的ASTC文件 没有导出PNG,图片也显示正常,
比如在parseASTCTex里第一行位置加了console.log ,有日志输出也,
但return function里面 也加了console.log没有运行到就 没有对应日志输出,说明return function应该没有被调用到就,
当然 换成压缩后的ASTC格式文件 就直接运行错误了 initWithImageFile: xxx.astc failed!,return function里面的console.log也没有对应日志输出

感觉ASTC的解析 好像不在parseASTCTex这里就,
我是哪里弄错了可能?

原生环境不需要这么玩呀,这个玩法是适合小游戏远程资源加载,本身apk就类似于zip,astc之后包体会减小的,只需要热更的脚本将astc文件zip,然后热更下载完之后解压,热更新是自带解压文件的,不用动管线

对,现在只是用APK方式测试而已 因为APK测试方便啊 ,定制引擎完引擎,然后打包 然后AS里编译一下 直接连手机就看到效果了 调试方便,目前的问题是 没有按照设计的方法去执行啊,parseASTCTex里return function就没有被执行, 当然 我没试小游戏的环境,但理论上应该一样吧 ,代码的流程是一样的吧 ,难道会是安卓就不会执行return function ?小游戏就会?

应该也是走的这里,你可以加点日志看看,还有编译引擎之后删除之前的构建工程试一下

感觉应该不是缓存的问题,目前的环境我始终看不到return function被调用 呵呵 搞笑了,前面的步骤都准备好了 最后一步失败了,先这样了 或者哪位兄弟也想试试这个功能 可以继续测,如果能成功说一下 我就想知道 我哪里弄错了是,
另外问一下 你用的2.4的哪个版本?

2.4.13

测了一下小游戏 会走parseASTCTex,安卓就不行,我认为你那里的安卓也应该不行,这个我认为是安卓是原生平台,直接支持纹理压缩了 直接由硬盘到硬件的流程 不走内存处理,而小游戏就不是这样 所以安卓不会触发这个过程,我不确定也 回头我单起个帖子 问问官方再,或者你自己试试你那里的安卓 看是不是这样也

大佬,请问下2.4.13我监听’before-build’不成功是怎么回事啊?‘before-change-files’倒是能监听到,但是这个时候纹理压缩已经完成了
module.exports = {
load() {
Editor.Builder.on(‘before-build’, async (options,error, result) => {
Editor.log(’**********before-build’)
})
}
}

1赞