项目中使用的不少UI图片是轴对称的,包括:1)横轴对称或纵轴对称
2)同时满足横轴对称和纵轴对称
图1:竖轴对称图片
可以使用镜像效果来节省图片资源。第一种情况可以省下完整资源的一半,第二种情况则可以省略3/4。普通的方法则是一个Image GameObject下面挂载1个或3个Image。这些Image的scale的x或y分量值设置为-1, 就产生一个镜像了,然后开发者小心翼翼把他们对齐。这个过程太繁琐,而且产生了冗余的GameObject。
更好的办法是使用纹理采样的Wrap Mode来实现。先设置图片Wrap Mode:
图2:Wrap Mode的设置
然后上代码:
public class MirrorImage : Image
{
[SerializeField]
public Vector2Int m_MirrorAttr = Vector2Int.one;
protected override void OnPopulateMesh(VertexHelper toFill)
{
if (type == Type.Simple)
{
GenerateSimpleSprite(toFill, preserveAspect);
return;
}
base.OnPopulateMesh(toFill);
}
void GenerateSimpleSprite(V