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;
|
}
|
|
}
|
}
|