Unity 加载本地或网络图片并转为精灵(Sprite)的方法
有时候我们需要把加载的图片转换成Sprite来使用。
方法:
步骤一:加载本地或网络图片并转换成Texture,这里不再赘述,可参考:
Unity 加载本地图片的方法-CSDN博客
Unity 下载网络图片的方法,并把图片赋值给UI和物体的方法-CSDN博客
步骤二:把Texture转换成Sprite。
方法是使用:Sprite.Create()方法。
该方法有以下六种语法:
public static Sprite Create(Texture2D texture, Rect rect, Vector2 pivot);
public static Sprite Create(Texture2D texture, Rect rect, Vector2 pivot, float pixelsPerUnit);
public static Sprite Create(Texture2D texture, Rect rect, Vector2 pivot, float pixelsPerUnit, uint extrude);
public static Sprite Create(Texture2D texture, Rect rect, Vector2 pivot, float pixelsPerUnit, uint extrude, SpriteMeshType meshType);
public static Sprite Create(Texture2D texture, Rect rect, Vector2 pivot,float pixelsPerUnit, uint extrude, SpriteMeshType meshType, Vector4 border);
public static Sprite Create(Texture2D texture, Rect rect, Vector2 pivot, float pixelsPerUnit, uint extrude, SpriteMeshType meshType, Vector4 border, bool generateFallbackPhysicsShape);
其中,texture,要转换的纹理对象;
rect,指定纹理中要使用的矩形区域;
pivot,Sprite中心点,默认值(0.5,0.5),即纹理中心点;
pixelsPerUnit,每个单位的像素数,默认值100.0f,表示1个Unty单位对应100个像素;
extrude,扩展纹理边缘的像素数,默认值为0,表示不进行扩展;
meshType,Sprite的网格类型,默认值为SpriteMeshType.Tight
,表示使用紧密的网格;
border,定义Sprite九宫格边框的向量,默认值是(0,0,0,0),表示没有边框;
generateFallbackPhysicsShape,指定是否生成回退的物理形状。
具体使用哪种语法,可根据需要使用。
如通过纹理和区域和中心点转换Sprite对象:
public Texture2D texture; // 纹理对象
// 转换Sprite
Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));