实现思路

Unity加载外部图片可以通过文件流和WWW的形式加载出来,再根据加载出来的纹理图片创建为精灵图片,赋值给Image对象即可;放大的思路主要是创建一张固定大小的Image图,点击小图时,将小图的sprite赋值给大图的sprite即可,也可以将大图的宽高设置为图片原始的width和height。

demo场景搭建

unity如何导入ABC文件 unity怎么导入整个文件夹_unity


新建图片文件夹,并添加几张图片用来测试:

unity如何导入ABC文件 unity怎么导入整个文件夹_放大图片_02

脚本实现

分别可以用文件流和WWW的形式加载图片,并有放大图片、查看上一张下一张图片的功能。

unity如何导入ABC文件 unity怎么导入整个文件夹_unity_03


unity如何导入ABC文件 unity怎么导入整个文件夹_unity_04


unity如何导入ABC文件 unity怎么导入整个文件夹_unity_05


unity如何导入ABC文件 unity怎么导入整个文件夹_unity如何导入ABC文件_06


unity如何导入ABC文件 unity怎么导入整个文件夹_加载图片_07


unity如何导入ABC文件 unity怎么导入整个文件夹_放大图片_08


unity如何导入ABC文件 unity怎么导入整个文件夹_游戏引擎_09


unity如何导入ABC文件 unity怎么导入整个文件夹_unity_10


以上就是整个脚本从上到下的完整截图,注释也很完整,想不懂都难吧…然后将脚本挂载到任意一个物体上,并拖拽相关物体到脚本面板上:

unity如何导入ABC文件 unity怎么导入整个文件夹_加载图片_11

效果展示

unity如何导入ABC文件 unity怎么导入整个文件夹_unity_12


unity如何导入ABC文件 unity怎么导入整个文件夹_放大图片_13


unity如何导入ABC文件 unity怎么导入整个文件夹_加载图片_14


unity如何导入ABC文件 unity怎么导入整个文件夹_unity_15

遇到的问题

1.加载出来的图片显示红色问号:

unity如何导入ABC文件 unity怎么导入整个文件夹_unity_16


于是我调试排查了一下,正常显示的图片位深度是ARGB32位的,显示问号的图片位深度是RGB24位的,好像Unity无法加载RGB24位的图片?所以出现了加载图片显示问号的情况,一开始我查看图片属性的位深度都是32位的呀,令我很奇怪,后来想了想有可能是我直接从百度下载下来的图片改了后缀导致的,下载的图片是webp格式的,然后我改成了png和jpg格式,我看能在电脑上能正常显示,以为也可以在unity加载出来。以前我也遇到过加载图片显示问号的情况,所以这里就做一个小小的总结吧。

总结

避免Unity加载外部图片出现显示问号的情况,应注意以下几点:

  1. 图片路径尽量使用英文路径,特别是低版本(指的是2017以下的版本,低版本对中文支持低,会导致加载失败的情况),2017的版本没测试过暂时不了解,像2018以上的版本对中文的支持提高了,好像没发现有这个问题。
  2. 图片位深度需是8/16/32位的,RGB24位的无法加载,如果是24位的可以用导入PS设置为32位的再导出使用。
  3. 网上下载的图需要用图片格式转换器转为Unity支持的图片格式。