yyl
2025-06-09 b9751b2f076ee050fe5b685e91ae4fc4469b1015
Main/Component/UI/Decorate/Graph/PolylineImage.cs
@@ -6,61 +6,58 @@
using UnityEngine;
using UnityEngine.UI;
namespace vnxbqy.UI {
    /// <summary>
    /// 这个组件接收一些顶点,绘制出水平和垂直的线。
    /// </summary>
    public class PolylineImage:Graphic {
/// <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]
    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;
        }
        [SerializeField]
        Vector2[] m_Points;
        public Vector2[] points {
            get {
                return this.m_Points;
            }
            set {
                this.m_Points = value;
                base.SetVerticesDirty();
            }
        }
        var hw = this.width * 0.5f;
        protected override void OnPopulateMesh(VertexHelper vh) {
            vh.Clear();
            if(this.points == null || this.points.Length < 2) {
                return;
            }
        for(var i = 0;i < this.points.Length - 1;i++) {
            var point = this.points[i];
            var nextPoint = this.points[i + 1];
            var hw = this.width * 0.5f;
            var xReversal = point.x > nextPoint.x;
            var yReversal = point.y > nextPoint.y;
            for(var i = 0;i < this.points.Length - 1;i++) {
                var point = this.points[i];
                var nextPoint = this.points[i + 1];
            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);
                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 });
            }
            UIUtility.AddQuad(vh,positions,color,new Vector2[4] { Vector2.one,Vector2.one,Vector2.one,Vector2.one });
        }
    }
@@ -69,3 +66,4 @@