using UnityEngine; using UnityEngine.UI; [DisallowMultipleComponent] [RequireComponent(typeof(RectTransform))] public class SectionImage:Graphic { [SerializeField] [Range(2,100)] int m_Section = 3; public int section { get { return m_Section; } } [SerializeField] [Range(1,200)] float m_Width = 2f; public float width { get { return m_Width; } } Vector2[] uv0s= new Vector2[4] { Vector2.one,Vector2.one,Vector2.one,Vector2.one }; protected override void OnPopulateMesh(VertexHelper vh) { vh.Clear(); var size = new Vector2(rectTransform.rect.width,rectTransform.rect.height); var squareCount = section - 1; var deltaX = (size.x - (section - 1) * width) / section + width; var startX = -size.x * 0.5f + deltaX - width; for(var i = 0;i < squareCount;i++) { var positions = new Vector3[4]; positions[0] = new Vector2(startX,-size.y * 0.5f); positions[1] = new Vector2(startX + width,-size.y * 0.5f); positions[2] = new Vector2(startX + width,size.y * 0.5f); positions[3] = new Vector2(startX,size.y * 0.5f); UIUtility.AddQuad(vh,positions,color,uv0s); startX += deltaX; } } }