项目中有使用到了很多对称的图片,于是美术哥为了减少图片占用的大小,提出要程序来将做对称,美术只需要出一半的图,剩余的一半有程序实现对称。参考文章:点击打开链接。
自己实现了一版本,将这个组件挂在拥有Image的对象上就可以了,要弄清楚几个点:
1.RectTransform中各项数值的意思
2.ModifyMesh调用时机(UGUI填充了图元数据后,会调用虚函数ModifyMesh给用户修改数据的机会)
3.获取的顶点数据的方法(VertexHelper)
4.Sprite的类型(Simple,Sliced)
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MirrorSprite : BaseMeshEffect
{
public enum eMirrorType
{
eHor,
eVer,
}
[SerializeField]
private eMirrorType mMirrorType;
private List<UIVertex> mVerts = new List<UIVertex>();
private List<int> mIndices = new List<int>();
private UIVertex mVertex = new UIVertex();
protected override void Awake()
{
mMirror