|  |  |  | 
|---|
|  |  |  | using UnityEngine.UI; | 
|---|
|  |  |  | using System.Collections.Generic; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | namespace vnxbqy.UI { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public class OffsetImage2:Text { | 
|---|
|  |  |  | public class OffsetImage2:Text { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | [SerializeField] | 
|---|
|  |  |  | Vector2 m_Offset; | 
|---|
|  |  |  | public Vector2 offset { | 
|---|
|  |  |  | get { | 
|---|
|  |  |  | return m_Offset; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | set { | 
|---|
|  |  |  | m_Offset = value; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | [SerializeField] | 
|---|
|  |  |  | Vector2 m_Offset; | 
|---|
|  |  |  | public Vector2 offset { | 
|---|
|  |  |  | get { | 
|---|
|  |  |  | return m_Offset; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|