前一段在做一个功能的时候必须加载外部多张连续的图片,来实现一个简单的小动画。本来是一个非常简单的功能,不用两分钟就写好了。但是最终打成apk测试的时候有个非常大的问题就是非常卡,图片播放卡的简直不忍直视,后来去看unity的官方文档,发现了一个非常好用的方法。
我们在使用unity的UGUI中的图片的时候,绝大多数人都是使用Image这个组件,而大家基本上很容易忽略掉这个组件的使用效率问题,因为都是在unity创建好的sprite直接赋值所以 看不出来有什么问题,但是如果你是直接动态加载外部的或者下载的图片你就会发现加载的时候特别卡,特别是越大,越不规则的图片更是耗时。但是还有个被大家忽略的组件就是RawImage,这个组件可以说是Image的简化版,它的功能虽然少很多但是几个基本的功能都在,最主要的是它可以直接赋值texture图片,这里大家可以不是很清楚,所以没有什么比直接写代码更直接的方式了:
public void ImageAssignment() //Image组件赋值方法
{
var path = Application.streamingAssetsPath + "/icon.png"; //外部图片地址
var tex = ResLoader.DownloadSync(path).texture; //使用www加载外部图片(这个方法是自己写的, 不会的话自己上网百度下)
var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
ImageObject.sprite = sprite;
}
public