unity的image抓取图片后会绘制一个矩形网格,并将图片的uv赋予,如我们想将显示的图像进行倾斜或其他处理,就可以尝试修改网格顶点位置。
这里用到了Matrix2x2 ,用 PopulateUIVertex取出本身的顶点,用SetUIVertex重新赋予。
尝试修改new Matrix2x2(1, 1, 0, 1),你会发现图片的倾斜变化;
toFill.PopulateUIVertex(ref pos2, 1); 后面的1是各个顶点标记
代码如下。
using System;
using UnityEngine;using System.Collections;
using UnityEngine.UI;
[ExecuteInEditMode]
public class testmesh : Image
{
[SerializeField]
public float OffsetMax =0.5f;
private Matrix2x2 trans = new Matrix2x2(1, 1, 0, 1);
protected override void OnPopulateMesh(VertexHelper toFill)
{
base.OnPopulateMesh(toFill);
UIVertex pos2 = new UIVertex();
UIVertex pos3 = new UIVertex();
toFill.PopulateUIVertex(ref pos2, 1);
toFill.PopulateUIVertex(ref pos3, 2);
pos3.position = trans * pos3.position;
toFill.SetUIVertex(pos2, 1);
toFill.SetUIVertex(pos3, 2);
}
}
QQ交流群:162136059