[笔记][unity]Runtime(运行时)将Texture转到Sprite

这个问题一搜索就能找到将Texture2D专为Sprite的方法,直接调用Sprite.Create即可,但是如果你是从网络下载下来的纹理,将会只是Texture而不是Texture2D,这让我想起以前做Java的时候可以将低级的直接强转成高级的然后使用,当时学的浅并不知道原理,只是Unity显然是不行的。


这里我只找到了使用WWW下载的处理方法,其实WWW就有LoadImageIntoTexture的方法,稳定上已经很清楚的说明了用法,虽然文档上还多余了弄了一步赋值给renderer的行为

其实大概步骤就是

var tex2d = new Texture2D(128,128);

www.LoadImageIntiTexture(tex2d);

var spr = Sprite.Create(tex2d,new Rect(0,0,128,128), Vector2.zero);

image.srpite = spr;


虽然这个方法对我来说足够了,但是如果要自己用别的方法下载可能就没那么方便了吧,当然实际上还有

Texture2D.LoadImage这个方法,也就是说如果直接用C#的代码去下载文件,可以通过此方法,而且C#下载的好处是显而易见的,那就是可以异步执行,因为Unity的API都不能在主线程以外调用,虽然WWW的下载应该也是做了异步的,因为下载过程很平滑,但是Load的时候就没法异步了,感觉实际上差不多,唯一的差别是WWW读取本地文件如果遇到中文目录就要转换(我对于这个转换是完全不清楚,只知道如果你粘贴的浏览器地址上它会给你转,并没有实践过),用C#File读取对中文支持很好

猜你喜欢

转载自blog.csdn.net/fg5823820/article/details/50708016