astc后图片太大了,所以想压缩完把图片zip一下,但引擎部分需要怎么改才能unzip读取图片
原生的话生成热更文件的时候把纹理压缩的文件生成zip就可以了,引擎热更会自动解压
你的意思是引擎会自动解压整个热更包吧?
我的意思是我把每个纹理压缩后的图片都zip,然后加载图片资源的时候先unzip到内存,再加载图片资源
getFileContent 这个接口, 里面去改!!! 所有的加密,解压什么的,都走这个接口
c++ 解压代码
if (buffer->size() >= 12 && memcmp("!GZCOMP!", buffer->buffer(), 8) == 0)
{
uint8_t* outBuf;
int outSize = ZipUtils::inflateMemory((unsigned char*)buffer->buffer() + 12, buffer->size() - 12, &outBuf);
if (outBuf)
{
buffer->resize(outSize);
memcpy(buffer->buffer(), outBuf, outSize);
free(outBuf);
}
else
{
return FileUtils::Status::ReadFailed;
}
}
不管是你整体zip或者单文件zip更新都可以设置更新完自动解压,达到减小包体的效果,在加载的时候unzip肯定会影响加载速度。
兄弟,这个问题有解决方案了吗?
自定义构建流程里把astc图片zip就行了,读取的时候引擎有帮我们unzip
我们用ASTC压缩图片 上架iOS ipa包是150M 苹果商店显示下载包体是320M. 正在寻找减少包体方案.
我准备把资源用zip形式整体加压,运行后再解压,放到手机目录里. 楼主是每个ASTC单独加压吗? 引擎提供了加载zip文件的接口? 我用的是2.4.13
是每个图片压缩。我用的是3.6。2.x就不太清楚了,你看下源码吧。