//-------------------------------------------------------- // [Author]: 玩个游戏 // [ Date ]: Wednesday, August 23, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; public class OffsetImage2:Text { [SerializeField] Vector2 m_Offset; public Vector2 offset { get { return m_Offset; } set { m_Offset = value; } } protected override void OnPopulateMesh(VertexHelper toFill) { base.OnPopulateMesh(toFill); List vertexs = new List(); toFill.GetUIVertexStream(vertexs); if(vertexs == null || vertexs.Count == 0) { return; } toFill.Clear(); var newVertexs = new List(); var index = 1 * 6 - 1; for(int i = 0;i < vertexs.Count;i++) { var vertex = vertexs[i]; if(i == index) { newVertexs.AddRange(AddHexgon(vertexs[i - 5].position,new Vector2(offset.x,font.fontSize),Color.white)); } if(i > index) { var position = vertex.position + new Vector3(offset.x,offset.y,0); vertex.position = position; } newVertexs.Add(vertex); } var aaa= this.cachedTextGenerator.verts; toFill.AddUIVertexTriangleStream(newVertexs); LayoutRebuilder.MarkLayoutForRebuild(this.rectTransform); } private UIVertex[] AddHexgon(Vector3 _startPosition,Vector2 _offset,Color _color) { var hexgon = new UIVertex[4]; var positions = new Vector3[4]; positions[0] = _startPosition; positions[1] = _startPosition + new Vector3(_offset.x,0,0); positions[2] = _startPosition + new Vector3(_offset.x,-_offset.y,0); positions[3] = _startPosition + new Vector3(0,-_offset.y,0); for(int i = 0;i < 4;i++) { hexgon[i] = UIUtility.PackageUIVertexUV1(positions[i],Vector2.zero,_color); } return hexgon; } }