| //-------------------------------------------------------- | 
| //    [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<UIVertex> vertexs = new List<UIVertex>(); | 
|         toFill.GetUIVertexStream(vertexs); | 
|   | 
|         if(vertexs == null || vertexs.Count == 0) { | 
|             return; | 
|         } | 
|   | 
|         toFill.Clear(); | 
|         var newVertexs = new List<UIVertex>(); | 
|         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; | 
|   | 
|     } | 
|   | 
| } |