修复调用UpdateDataName()接口时不会自动刷新的问题

This commit is contained in:
monitor1394
2020-05-29 07:52:21 +08:00
parent c6f32d4324
commit ec62dea1a5
5 changed files with 116 additions and 29 deletions

View File

@@ -0,0 +1,69 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEngine;
using UnityEngine.UI;
namespace XCharts.Examples
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Example31_PieUpdateName : MonoBehaviour
{
PieChart chart;
int count = 0;
void Awake()
{
chart = gameObject.GetComponent<PieChart>();
if (chart == null)
{
chart = gameObject.AddComponent<PieChart>();
}
var serieIndex = 0;
var serie = chart.series.GetSerie(serieIndex);
if (serie == null) return;
serie.label.show = true;
serie.label.position = SerieLabel.Position.Outside;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (count % 2 == 0) ResetSameName();
else UpdateDataName();
count++;
}
}
void UpdateDataName()
{
var serieIndex = 0;
var serie = chart.series.GetSerie(serieIndex);
if (serie == null) return;
for (int i = 0; i < serie.dataCount; i++)
{
var value = Random.Range(10, 100);
chart.UpdateData(serieIndex, i, value);
chart.UpdateDataName(serieIndex, i, "value=" + value);
}
}
void ResetSameName()
{
var serieIndex = 0;
var serie = chart.series.GetSerie(serieIndex);
if (serie == null) return;
for (int i = 0; i < serie.dataCount; i++)
{
chart.UpdateDataName(serieIndex, i, "piename");
}
chart.themeInfo.SetAllDirty();
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 41195ee7a652f4ef79c22c365d314621
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -99,6 +99,7 @@ namespace XCharts
{
base.ClearDirty();
ClearLabelDirty();
SeriesHelper.ClearNameDirty(this);
}
/// <summary>

View File

@@ -131,7 +131,6 @@ namespace XCharts
protected virtual void Update()
{
CheckSize();
CheckLegend();
CheckComponent();
CheckPointerPos();
CheckTooltip();
@@ -142,6 +141,24 @@ namespace XCharts
protected virtual void CheckComponent()
{
if (m_Series.anyDirty)
{
if (m_Series.vertsDirty) RefreshChart();
if (SeriesHelper.IsLabelDirty(m_Series)) m_ReinitLabel = true;
if (SeriesHelper.IsNeedLabelUpdate(m_Series) && !m_RefreshChart) m_RefreshLabel = true;
if (SeriesHelper.IsLabelDirty(m_Series)) m_ReinitLabel = true;
foreach (var serie in m_Series.list)
{
if (serie.titleStyle.componentDirty) m_ReinitTitle = true;
if (serie.nameDirty)
{
m_Legend.SetAllDirty();
RefreshChart();
serie.ClearNameDirty();
}
}
m_Series.ClearDirty();
}
if (m_ThemeInfo.anyDirty)
{
if (m_CheckTheme != m_ThemeInfo.theme)
@@ -188,17 +205,6 @@ namespace XCharts
RefreshChart();
m_Settings.ClearDirty();
}
if (m_Series.anyDirty)
{
if (m_Series.vertsDirty) RefreshChart();
if (SeriesHelper.IsLabelDirty(m_Series)) m_ReinitLabel = true;
if (SeriesHelper.IsNeedLabelUpdate(m_Series) && !m_RefreshChart) m_RefreshLabel = true;
foreach (var serie in m_Series.list)
{
if (serie.titleStyle.componentDirty) m_ReinitTitle = true;
}
m_Series.ClearDirty();
}
}
protected override void OnEnable()
@@ -581,23 +587,6 @@ namespace XCharts
OnSizeChanged();
}
private void CheckLegend()
{
if (m_Legend.show)
{
foreach (var serie in series.list)
{
if (serie.nameDirty)
{
m_Legend.SetAllDirty();
serie.ClearNameDirty();
RefreshChart();
break;
}
}
}
}
private void CheckPointerPos()
{
if (m_ForceOpenRaycastTarget) raycastTarget = true;

View File

@@ -31,6 +31,23 @@ namespace XCharts
return false;
}
public static bool IsNameDirty(Series series)
{
foreach (var serie in series.list)
{
if (serie.nameDirty) return true;
}
return false;
}
public static void ClearNameDirty(Series series)
{
foreach (var serie in series.list)
{
serie.ClearNameDirty();
}
}
public static bool IsLegalLegendName(string name)
{
int numName = -1;