实现思路
Unity加载外部图片可以通过文件流和WWW的形式加载出来,再根据加载出来的纹理图片创建为精灵图片,赋值给Image对象即可;放大的思路主要是创建一张固定大小的Image图,点击小图时,将小图的sprite赋值给大图的sprite即可,也可以将大图的宽高设置为图片原始的width和height。
demo场景搭建
新建图片文件夹,并添加几张图片用来测试:
脚本实现
分别可以用文件流和WWW的形式加载图片,并有放大图片、查看上一张下一张图片的功能。
以上就是整个脚本从上到下的完整截图,注释也很完整,想不懂都难吧…然后将脚本挂载到任意一个物体上,并拖拽相关物体到脚本面板上:
效果展示
遇到的问题
1.加载出来的图片显示红色问号:
于是我调试排查了一下,正常显示的图片位深度是ARGB32位的,显示问号的图片位深度是RGB24位的,好像Unity无法加载RGB24位的图片?所以出现了加载图片显示问号的情况,一开始我查看图片属性的位深度都是32位的呀,令我很奇怪,后来想了想有可能是我直接从百度下载下来的图片改了后缀导致的,下载的图片是webp格式的,然后我改成了png和jpg格式,我看能在电脑上能正常显示,以为也可以在unity加载出来。以前我也遇到过加载图片显示问号的情况,所以这里就做一个小小的总结吧。
总结
避免Unity加载外部图片出现显示问号的情况,应注意以下几点:
- 图片路径尽量使用英文路径,特别是低版本(指的是2017以下的版本,低版本对中文支持低,会导致加载失败的情况),2017的版本没测试过暂时不了解,像2018以上的版本对中文的支持提高了,好像没发现有这个问题。
- 图片位深度需是8/16/32位的,RGB24位的无法加载,如果是24位的可以用导入PS设置为32位的再导出使用。
- 网上下载的图需要用图片格式转换器转为Unity支持的图片格式。