经过一周的时间,差不多才解决了这个问题一定要记录一下.
主要遇到的困难就是png文件在转换为bytes文件后会出现白边的现象
c# - How can I programatically load a texture into an Image the same way the Unity Editor does?这个地方将问题说明的很详细.
因为我们项目会使用到大量的图片资源(png格式),但是在iOS系统会有一个非常大的问题,iOS会默认按照最大格式来保存图片.这将会导致包体安装完之后非常的大.
比如
在Unity中会展开成

然后我照着Reducing Unity game file size这篇博客的思路来改变了原来处理这种图片的流程,主要思路就是:bypassing Unity\'s content pipeline and loading the textures from the .png files in real time.具体做法是让图片文件从.png的文件后缀改变.bytes的后缀作为二进制的文件保存,在Runtime的时候通过Texture.LoadImage(byte[] bytes)的API来加载出图片.
可是一个神奇的事情出现了,不同图片间会出现很多的边缘线

然后在Unity Answers中发现了一个大牛写的png文件会有白边的原因分析,Messy Alpha Problem,大概是因为PhotoShop中,会把100% Transparent的地方默认颜色值设为白色,这样会导致在Runtime时,做图片interpolation运算时候,由于这样100%Transparent点的干扰使用会出现白边的情况,大牛提出的解决方法是,在PS中,利用插件为这些100%Transparent点,填充上相邻像素点的颜色,而由于我们的图片资源太多了,让美术一个一个改图片也不现实,所以参考了一段Google上的代码,通过代码来完成了PS中插线的工作流程.PNG transparency has white border/halo,在这个问题中有这段代码.至此问题基本解决,但是貌似性能消耗太多,不知道大家有没有更好的办法,或者大家在iOS平台对于大量的.png图片都会怎么处理
