//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, August 10, 2017
|
//--------------------------------------------------------
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
/// <summary>
|
/// 这个组件接收一些顶点,绘制出水平和垂直的线。
|
/// </summary>
|
public class PolylineImage:Graphic {
|
|
[SerializeField]
|
float m_Width;
|
public float width {
|
get {
|
return this.m_Width;
|
}
|
set {
|
this.m_Width = value;
|
base.SetVerticesDirty();
|
}
|
}
|
|
[SerializeField]
|
Vector2[] m_Points;
|
public Vector2[] points {
|
get {
|
return this.m_Points;
|
}
|
set {
|
this.m_Points = value;
|
base.SetVerticesDirty();
|
}
|
}
|
|
protected override void OnPopulateMesh(VertexHelper vh) {
|
vh.Clear();
|
if(this.points == null || this.points.Length < 2) {
|
return;
|
}
|
|
var hw = this.width * 0.5f;
|
|
for(var i = 0;i < this.points.Length - 1;i++) {
|
var point = this.points[i];
|
var nextPoint = this.points[i + 1];
|
|
var xReversal = point.x > nextPoint.x;
|
var yReversal = point.y > nextPoint.y;
|
|
var positions = new Vector3[4];
|
positions[0] = new Vector2(xReversal ? point.x + hw : point.x - hw,yReversal ? point.y + hw : point.y - hw);
|
positions[1] = new Vector2(xReversal ? nextPoint.x - hw : nextPoint.x + hw,yReversal ? point.y + hw : point.y - hw);
|
positions[2] = new Vector2(xReversal ? nextPoint.x - hw : nextPoint.x + hw,yReversal ? nextPoint.y - hw : nextPoint.y + hw);
|
positions[3] = new Vector2(xReversal ? point.x + hw : point.x - hw,yReversal ? nextPoint.y - hw : nextPoint.y + hw);
|
|
UIUtility.AddQuad(vh,positions,color,new Vector2[4] { Vector2.one,Vector2.one,Vector2.one,Vector2.one });
|
}
|
|
}
|
|
}
|