| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 | using System;using UnityEngine;namespace XCharts.Runtime{    /// <summary>    /// Global parameter setting component. The default value can be used in general, and can be adjusted when necessary.    /// ||全局参数设置组件。一般情况下可使用默认值,当有需要时可进行调整。    /// </summary>    [Serializable]    public class Settings : MainComponent    {        [SerializeField] private bool m_Show = true;        [SerializeField][Range(1, 20)] protected int m_MaxPainter = 10;        [SerializeField] protected bool m_ReversePainter = false;        [SerializeField] protected Material m_BasePainterMaterial;        [SerializeField] protected Material m_SeriePainterMaterial;        [SerializeField] protected Material m_UpperPainterMaterial;        [SerializeField] protected Material m_TopPainterMaterial;        [SerializeField][Range(1, 10)] protected float m_LineSmoothStyle = 2.5f;        [SerializeField][Range(1f, 20)] protected float m_LineSmoothness = 2f;        [SerializeField][Range(0.5f, 20)] protected float m_LineSegmentDistance = 3f;        [SerializeField][Range(1, 10)] protected float m_CicleSmoothness = 2f;        [SerializeField] protected float m_LegendIconLineWidth = 2;        [SerializeField] private float[] m_LegendIconCornerRadius = new float[] { 0.25f, 0.25f, 0.25f, 0.25f };        [SerializeField][Since("v3.1.0")] protected float m_AxisMaxSplitNumber = 50;        public bool show { get { return m_Show; } }        /// <summary>        /// max painter.        /// ||设定的painter数量。        /// </summary>        public int maxPainter        {            get { return m_MaxPainter; }            set { if (PropertyUtil.SetStruct(ref m_MaxPainter, value < 0 ? 1 : value)) SetVerticesDirty(); }        }        /// <summary>        /// Painter是否逆序。逆序时index大的serie最先绘制。        /// </summary>        public bool reversePainter        {            get { return m_ReversePainter; }            set { if (PropertyUtil.SetStruct(ref m_ReversePainter, value)) SetVerticesDirty(); }        }        /// <summary>        /// Base Pointer 材质球,设置后会影响Axis等。        /// </summary>        public Material basePainterMaterial        {            get { return m_BasePainterMaterial; }            set { if (PropertyUtil.SetClass(ref m_BasePainterMaterial, value)) SetComponentDirty(); }        }        /// <summary>        /// Serie Pointer 材质球,设置后会影响所有Serie。        /// </summary>        public Material seriePainterMaterial        {            get { return m_SeriePainterMaterial; }            set { if (PropertyUtil.SetClass(ref m_SeriePainterMaterial, value)) SetComponentDirty(); }        }        /// <summary>        /// Top Pointer 材质球。        /// </summary>        public Material topPainterMaterial        {            get { return m_TopPainterMaterial; }            set { if (PropertyUtil.SetClass(ref m_TopPainterMaterial, value)) SetComponentDirty(); }        }        /// <summary>        /// Upper Pointer 材质球。        /// </summary>        public Material upperPainterMaterial        {            get { return m_UpperPainterMaterial; }            set { if (PropertyUtil.SetClass(ref m_UpperPainterMaterial, value)) SetComponentDirty(); }        }        /// <summary>        /// Curve smoothing factor. By adjusting the smoothing coefficient, the curvature of the curve can be changed,         /// and different curves with slightly different appearance can be obtained.        /// ||曲线平滑系数。通过调整平滑系数可以改变曲线的曲率,得到外观稍微有变化的不同曲线。        /// </summary>        public float lineSmoothStyle        {            get { return m_LineSmoothStyle; }            set { if (PropertyUtil.SetStruct(ref m_LineSmoothStyle, value < 0 ? 1f : value)) SetVerticesDirty(); }        }        /// <summary>        /// Smoothness of curve. The smaller the value, the smoother the curve, but the number of vertices will increase.        /// ||When the area with gradient is filled, the larger the value, the worse the transition effect.        /// ||曲线平滑度。值越小曲线越平滑,但顶点数也会随之增加。当开启有渐变的区域填充时,数值越大渐变过渡效果越差。        /// </summary>        public float lineSmoothness        {            get { return m_LineSmoothness; }            set { if (PropertyUtil.SetStruct(ref m_LineSmoothness, value < 0 ? 1f : value)) SetVerticesDirty(); }        }        /// <summary>        /// The partition distance of a line segment. A line in a normal line chart is made up of many segments,         /// the number of which is determined by the change in value. The smaller the number of segments,         /// the higher the number of vertices. When the area with gradient is filled, the larger the value, the worse the transition effect.        /// ||线段的分割距离。普通折线图的线是由很多线段组成,段数由该数值决定。值越小段数越多,但顶点数也会随之增加。当开启有渐变的区域填充时,数值越大渐变过渡效果越差。        /// </summary>        public float lineSegmentDistance        {            get { return m_LineSegmentDistance; }            set { if (PropertyUtil.SetStruct(ref m_LineSegmentDistance, value < 0 ? 1f : value)) SetVerticesDirty(); }        }        /// <summary>        /// the smoothess of cricle.        /// ||圆形的平滑度。数越小圆越平滑,但顶点数也会随之增加。        /// </summary>        public float cicleSmoothness        {            get { return m_CicleSmoothness; }            set { if (PropertyUtil.SetStruct(ref m_CicleSmoothness, value < 0 ? 1f : value)) SetVerticesDirty(); }        }        /// <summary>        /// the width of line serie legend.        /// ||Line类型图例图标的线条宽度。        /// </summary>        public float legendIconLineWidth        {            get { return m_LegendIconLineWidth; }            set { if (PropertyUtil.SetStruct(ref m_LegendIconLineWidth, value)) SetVerticesDirty(); }        }        /// <summary>        /// The radius of rounded corner. Its unit is px. Use array to respectively specify the 4 corner radiuses((clockwise upper left, upper right, bottom right and bottom left)).        /// ||图例圆角半径。用数组分别指定4个圆角半径(顺时针左上,右上,右下,左下)。        /// </summary>        public float[] legendIconCornerRadius        {            get { return m_LegendIconCornerRadius; }            set { if (PropertyUtil.SetClass(ref m_LegendIconCornerRadius, value, true)) SetVerticesDirty(); }        }        /// <summary>        /// the max splitnumber of axis.        /// ||坐标轴最大分隔段数。段数过大时可能会生成较多的label节点。        /// </summary>        public float axisMaxSplitNumber        {            get { return m_AxisMaxSplitNumber; }            set { if (PropertyUtil.SetStruct(ref m_AxisMaxSplitNumber, value)) SetVerticesDirty(); }        }        public void Copy(Settings settings)        {            m_ReversePainter = settings.reversePainter;            m_MaxPainter = settings.maxPainter;            m_BasePainterMaterial = settings.basePainterMaterial;            m_SeriePainterMaterial = settings.seriePainterMaterial;            m_UpperPainterMaterial = settings.upperPainterMaterial;            m_TopPainterMaterial = settings.topPainterMaterial;            m_LineSmoothStyle = settings.lineSmoothStyle;            m_LineSmoothness = settings.lineSmoothness;            m_LineSegmentDistance = settings.lineSegmentDistance;            m_CicleSmoothness = settings.cicleSmoothness;            m_LegendIconLineWidth = settings.legendIconLineWidth;            ChartHelper.CopyArray(m_LegendIconCornerRadius, settings.legendIconCornerRadius);        }        public override void Reset()        {            Copy(DefaultSettings);        }        public static Settings DefaultSettings        {            get            {                return new Settings()                {                    m_ReversePainter = false,                        m_MaxPainter = XCSettings.maxPainter,                        m_LineSmoothStyle = XCSettings.lineSmoothStyle,                        m_LineSmoothness = XCSettings.lineSmoothness,                        m_LineSegmentDistance = XCSettings.lineSegmentDistance,                        m_CicleSmoothness = XCSettings.cicleSmoothness,                        m_LegendIconLineWidth = 2,                        m_LegendIconCornerRadius = new float[] { 0.25f, 0.25f, 0.25f, 0.25f }                };            }        }    }}
 |