修复饼图在Inspector上修改相关参数后不刷新的问题

This commit is contained in:
monitor1394
2023-07-28 08:09:31 +08:00
parent f867ac7efd
commit 18c0d3218d
3 changed files with 16 additions and 2 deletions

View File

@@ -172,6 +172,12 @@ namespace XCharts.Runtime
DefaultChart(); DefaultChart();
Awake(); Awake();
} }
protected override void OnValidate()
{
base.OnValidate();
foreach (var handler in m_SerieHandlers) handler.OnValidate();
}
#endif #endif
protected override void Start() protected override void Start()

View File

@@ -76,13 +76,13 @@ namespace XCharts.Runtime
public override void UpdateSerieContext() public override void UpdateSerieContext()
{ {
var needCheck = m_LegendEnter || m_LegendExiting || (chart.isPointerInChart && PointerIsInPieSerie(serie, chart.pointerPos)); var needCheck = m_LegendEnter || m_LegendExiting || m_ForceUpdateSerieContext || (chart.isPointerInChart && PointerIsInPieSerie(serie, chart.pointerPos));
var needInteract = false; var needInteract = false;
var interactEnable = serie.animation.enable && serie.animation.interaction.enable; var interactEnable = serie.animation.enable && serie.animation.interaction.enable;
Color32 color, toColor; Color32 color, toColor;
if (!needCheck) if (!needCheck)
{ {
if (m_LastCheckContextFlag != needCheck) if (m_LastCheckContextFlag != needCheck || m_ForceUpdateSerieContext)
{ {
serie.context.pointerItemDataIndex = -1; serie.context.pointerItemDataIndex = -1;
serie.context.pointerEnter = false; serie.context.pointerEnter = false;

View File

@@ -29,6 +29,7 @@ namespace XCharts.Runtime
public virtual void OnBeginDrag(PointerEventData eventData) { } public virtual void OnBeginDrag(PointerEventData eventData) { }
public virtual void OnEndDrag(PointerEventData eventData) { } public virtual void OnEndDrag(PointerEventData eventData) { }
public virtual void OnScroll(PointerEventData eventData) { } public virtual void OnScroll(PointerEventData eventData) { }
public virtual void OnValidate() { }
public virtual void RefreshLabelNextFrame() { } public virtual void RefreshLabelNextFrame() { }
public virtual void RefreshLabelInternal() { } public virtual void RefreshLabelInternal() { }
public virtual void UpdateSerieContext() { } public virtual void UpdateSerieContext() { }
@@ -59,6 +60,7 @@ namespace XCharts.Runtime
protected bool m_LastCheckContextFlag = false; protected bool m_LastCheckContextFlag = false;
protected bool m_LegendEnter = false; protected bool m_LegendEnter = false;
protected bool m_LegendExiting = false; protected bool m_LegendExiting = false;
protected bool m_ForceUpdateSerieContext = false;
protected int m_LegendEnterIndex; protected int m_LegendEnterIndex;
protected ChartLabel m_EndLabel; protected ChartLabel m_EndLabel;
@@ -73,6 +75,11 @@ namespace XCharts.Runtime
AnimationStyleHelper.UpdateSerieAnimation(serie); AnimationStyleHelper.UpdateSerieAnimation(serie);
} }
public override void OnValidate()
{
m_ForceUpdateSerieContext = true;
}
public override void Update() public override void Update()
{ {
if (m_NeedInitComponent) if (m_NeedInitComponent)
@@ -134,6 +141,7 @@ namespace XCharts.Runtime
var lastEnter = serie.context.pointerEnter; var lastEnter = serie.context.pointerEnter;
var lastDataIndex = serie.context.pointerItemDataIndex; var lastDataIndex = serie.context.pointerItemDataIndex;
UpdateSerieContext(); UpdateSerieContext();
m_ForceUpdateSerieContext = false;
if (lastEnter != serie.context.pointerEnter || lastDataIndex != serie.context.pointerItemDataIndex) if (lastEnter != serie.context.pointerEnter || lastDataIndex != serie.context.pointerItemDataIndex)
{ {
if (chart.onSerieEnter != null || chart.onSerieExit != null || serie.onEnter != null || serie.onExit != null) if (chart.onSerieEnter != null || chart.onSerieExit != null || serie.onEnter != null || serie.onExit != null)