这一节看一下图片资源的应用,我们平时所用的图片格式有.png,.jpg等,在unity中都会转换为texture格式,如
image.png
如果我们要把它放在Image控件上,必须转换为Sprite格式,如:
image.png
可以看到,图片"组4"下面多出了一个同名的资源。图中mip Maps选中表示会根据摄像机远近不同而生成对应的八个贴图,适用于会根据场景来显示不同清晰度的图片。
一个texture2D格式不仅可以生成一个Sprite,还可以生成多个,如:
image.png
在Sprite Mode中选择 Multiple,可以在Sprite Editor中划出多个区域,点击Apply后可在图片“组4”下看到多个Sprite,这个时候会发现只能拖动"组4_0"这样的Sprite进入Image中了,Texture“组4”就无法拖进Image了。当然只有一张Sprite的时候可以,因为它默认会选中内部唯一的那个Sprite。
image.png
接下来我们通过一个小demo来加深认识,先获取计算机文件夹里的一张.png图片,生成一个Texture2D的对象,用它去加载这个图片,前面说了Texture2D不能赋给Image,因此我们还要用这个texture2D创建一个Sprite的对象
public Image image;
// Use this for initialization
void Start () {
byte[] byteData = System.IO.File.ReadAllBytes ("C:/Users/0001/Pictures/Camera Roll/20190123163748.png");
Texture2D texture = new Texture2D (1, 1, UnityEngine.TextureFormat.RGB565, false);
texture.LoadImage (byteData);
texture.Apply ();
Sprite sprite = Sprite.Create (texture, new Rect (0, 0, texture.width, texture.height), new Vector2 (0.5f, 0.5f));
image.overrideSprite = sprite;
}
Texture2D的构造方法里前2项是宽高,3是texture格式,4是是否是mipMap图片。Sprite.Create方法传入这个texture2D对象、一个Rect类对象和一个重心位置即可。详情可查API文档。试验一下,在控件Image中确实加载了这个图片。
image.png
不足之处,多谢指正。
网友评论