之前然哥做了个游戏,一开始apk包体大约是120多M。如果发到某平台上就需要分包了。
今天他跟我说他解决了这件事,我问他是不是做了给图片减色之类降低品质的事情?他告诉我不是的,他所作的其实就只是把文件的扩展名从.jpg改成了.byte而已,包体一下子从120多M降到了50M。
当然这样改完之后,代码里的使用方式也得相应更改,变成这个样子:
var ta = Resources.Load<TextAsset>(….):
return new Texture2D().LoadImage(ta.bytes);
当然虽然最终包体大小减了,但这样做还是有挺多限制的,比如prefab里直接引用图片就不行了,Unity的atlas功能也没法使用了,uGUI的使用也受到很多限制,很多原本Unity的功能,不得不自己来写一套东西来实现。不过应该挺适合某些图片量大的avg游戏来使用的吧。
具体原理嘛,unity看到.jpg.png这种文件,打包的时候就按压缩设置的option给你打包了,如果是byte,就会压缩的更小一些了。
网友评论