diff --git a/CHANGELOG-EN.md b/CHANGELOG-EN.md index d9cd52af..37f63e63 100644 --- a/CHANGELOG-EN.md +++ b/CHANGELOG-EN.md @@ -40,6 +40,8 @@ ## master +* (2021.09.06) Fixed bug where `GaugeChart` changing `splitNumber` with code does not refresh `label` #167 + ## v2.4.0 ### Main points diff --git a/CHANGELOG.md b/CHANGELOG.md index ea05a15b..93b96763 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,8 @@ ## master +* (2021.09.06) 修复`GaugeChart`用代码改变`splitNumber`不会刷新`label`的问题 #167 + ## v2.4.0 ### 版本要点 diff --git a/Runtime/Internal/DrawSerieGauge.cs b/Runtime/Internal/DrawSerieGauge.cs index 55385a02..82a68068 100644 --- a/Runtime/Internal/DrawSerieGauge.cs +++ b/Runtime/Internal/DrawSerieGauge.cs @@ -9,6 +9,7 @@ using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using XUGL; +using System.Collections.Generic; namespace XCharts { @@ -20,6 +21,7 @@ namespace XCharts private static readonly string s_AxisLabelObjectName = "axis_label"; private bool m_UpdateTitleText = false; private bool m_UpdateLabelText = false; + private Dictionary m_LastSplitNumber = new Dictionary(); public DrawSerieGauge(BaseChart chart) { @@ -61,6 +63,21 @@ namespace XCharts } } } + foreach (var serie in chart.series.list) + { + if (serie.type == SerieType.Gauge) + { + if (!m_LastSplitNumber.TryGetValue(serie.index, out var lastSplitNumber)) + { + m_LastSplitNumber[serie.index] = lastSplitNumber; + } + else if (serie.splitNumber != lastSplitNumber) + { + m_LastSplitNumber[serie.index] = serie.splitNumber; + InitAxisLabel(); + } + } + } } public void DrawBase(VertexHelper vh)