diff --git a/Runtime/API/RadarChart_API.cs b/Runtime/API/RadarChart_API.cs
new file mode 100644
index 00000000..df8908fa
--- /dev/null
+++ b/Runtime/API/RadarChart_API.cs
@@ -0,0 +1,131 @@
+/******************************************/
+/* */
+/* Copyright (c) 2018 monitor1394 */
+/* https://github.com/monitor1394 */
+/* */
+/******************************************/
+
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace XCharts
+{
+ public partial class RadarChart
+ {
+ ///
+ /// 雷达坐标系组件列表。
+ ///
+ public List radars { get { return m_Radars; } }
+
+ ///
+ /// 移除所有数据,包含雷达坐标系指示器数据。
+ ///
+ public override void RemoveData()
+ {
+ base.RemoveData();
+ foreach (var radar in m_Radars)
+ {
+ radar.indicatorList.Clear();
+ }
+ m_CheckRadars.Clear();
+ }
+
+ ///
+ /// 移除所有雷达坐标系组件。
+ ///
+ public void RemoveRadar()
+ {
+ m_Radars.Clear();
+ }
+
+ ///
+ /// 添加雷达坐标系组件。
+ ///
+ public void AddRadar(Radar radar)
+ {
+ m_Radars.Add(radar);
+ }
+
+ ///
+ /// 添加雷达坐标系组件。
+ ///
+ /// 形状,圆形还是多边形
+ /// 中心点,0-1浮点数时表示百分比
+ /// 半径,0-1浮点数时表示百分比
+ /// 指示器轴的分割段数
+ /// 线条宽
+ /// 是否显示指示器名称
+ /// 是否显示分割区域
+ ///
+ public Radar AddRadar(Radar.Shape shape, Vector2 center, float radius, int splitNumber = 5,
+ float lineWidth = 0.6f, bool showIndicator = true, bool showSplitArea = true)
+ {
+ var radar = new Radar();
+ radar.shape = shape;
+ radar.splitNumber = splitNumber;
+ radar.radius = radius;
+ radar.indicator = showIndicator;
+ radar.center[0] = center.x;
+ radar.center[1] = center.y;
+ radar.splitArea.show = showSplitArea;
+ radar.lineStyle.width = lineWidth;
+ m_Radars.Add(radar);
+ return radar;
+ }
+
+ ///
+ /// 添加指示器。
+ ///
+ /// 雷达坐标系组件索引,从0开始
+ /// 指示器名称
+ /// 指示器最小值
+ /// 指示器最大值
+ ///
+ public Radar.Indicator AddIndicator(int radarIndex, string name, float min, float max)
+ {
+ var radar = GetRadar(radarIndex);
+ if (radar == null) return null;
+ return radar.AddIndicator(name, min, max);
+ }
+
+ ///
+ /// 更新指示器。
+ ///
+ /// 雷达坐标系组件的索引,从0开始
+ /// 指示器索引,从0开始
+ /// 指示器名称
+ /// 指示器最小值
+ /// 指示器最大值
+ ///
+ public bool UpdateIndicator(int radarIndex, int indicatorIndex, string name, float min, float max)
+ {
+ var radar = GetRadar(radarIndex);
+ if (radar == null) return false;
+ return radar.UpdateIndicator(indicatorIndex, name, min, max);
+ }
+
+ ///
+ /// 获得指定索引的雷达坐标系组件。
+ ///
+ ///
+ ///
+ public Radar GetRadar(int radarIndex)
+ {
+ if (radarIndex < 0 || radarIndex > m_Radars.Count - 1) return null;
+ return m_Radars[radarIndex];
+ }
+
+ ///
+ /// 获得指定雷达坐标系组件指定索引的指示器。
+ ///
+ ///
+ ///
+ ///
+ public Radar.Indicator GetIndicator(int radarIndex, int indicatorIndex)
+ {
+ var radar = GetRadar(radarIndex);
+ if (radar != null) return radar.GetIndicator(indicatorIndex);
+ else return null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Runtime/API/RadarChart_API.cs.meta b/Runtime/API/RadarChart_API.cs.meta
new file mode 100644
index 00000000..111916d9
--- /dev/null
+++ b/Runtime/API/RadarChart_API.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f17a7aa35fdd3417dab9414f10fe2886
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Runtime/Component/Main/Radar.cs b/Runtime/Component/Main/Radar.cs
index 0cef4db5..a2e629c1 100644
--- a/Runtime/Component/Main/Radar.cs
+++ b/Runtime/Component/Main/Radar.cs
@@ -417,5 +417,31 @@ namespace XCharts
var y = runtimeCenterPos.y + (runtimeRadius + indicatorGap) * Mathf.Cos(angle);
return new Vector3(x, y);
}
+
+ public Radar.Indicator AddIndicator(string name, float min, float max)
+ {
+ var indicator = new Radar.Indicator();
+ indicator.name = name;
+ indicator.min = min;
+ indicator.max = max;
+ indicatorList.Add(indicator);
+ return indicator;
+ }
+
+ public bool UpdateIndicator(int indicatorIndex, string name, float min, float max)
+ {
+ var indicator = GetIndicator(indicatorIndex);
+ if (indicator == null) return false;
+ indicator.name = name;
+ indicator.min = min;
+ indicator.max = max;
+ return true;
+ }
+
+ public Radar.Indicator GetIndicator(int indicatorIndex)
+ {
+ if (indicatorIndex < 0 || indicatorIndex > indicatorList.Count - 1) return null;
+ return indicatorList[indicatorIndex];
+ }
}
}
\ No newline at end of file
diff --git a/Runtime/Component/Main/Serie.cs b/Runtime/Component/Main/Serie.cs
index a83eb37b..bc7bfd50 100644
--- a/Runtime/Component/Main/Serie.cs
+++ b/Runtime/Component/Main/Serie.cs
@@ -731,7 +731,6 @@ namespace XCharts
var serieData = new SerieData()
{
data = new List() { xValue, value },
- lastData = new List() { xValue, value },
name = dataName
};
serieData.index = xValue;
@@ -760,7 +759,6 @@ namespace XCharts
var serieData = new SerieData()
{
data = new List() { xValue, yValue },
- lastData = new List() { xValue, yValue },
name = dataName
};
serieData.index = m_Data.Count;
@@ -804,7 +802,6 @@ namespace XCharts
for (int i = 0; i < valueList.Count; i++)
{
serieData.data.Add(valueList[i]);
- serieData.lastData.Add(valueList[i]);
}
m_Data.Add(serieData);
return serieData;
@@ -1041,9 +1038,9 @@ namespace XCharts
{
if (index >= 0 && index < m_Data.Count && values != null)
{
- var list = m_Data[index].data;
- list.Clear();
- foreach (var v in values) list.Add(v);
+ var serieData = m_Data[index];
+ for (int i = 0; i < values.Count; i++)
+ serieData.UpdateData(i, values[i]);
return true;
}
return false;
diff --git a/Runtime/Component/Sub/SerieData.cs b/Runtime/Component/Sub/SerieData.cs
index 554a12a5..cbfb711b 100644
--- a/Runtime/Component/Sub/SerieData.cs
+++ b/Runtime/Component/Sub/SerieData.cs
@@ -156,7 +156,6 @@ namespace XCharts
private List m_LastData = new List();
private List m_DataUpdateTime = new List();
private List m_DataUpdateFlag = new List();
- public List lastData { get { return m_LastData; } internal set { m_LastData = value; } }
public float GetData(int index)
{
@@ -169,7 +168,7 @@ namespace XCharts
public float GetLastData(int index)
{
- if (index >= 0 && index < lastData.Count)
+ if (index >= 0 && index < m_LastData.Count)
{
return m_LastData[index];
}
@@ -219,6 +218,8 @@ namespace XCharts
if (m_LastData.Count != m_Data.Count)
{
m_LastData.Clear();
+ m_DataUpdateTime.Clear();
+ m_DataUpdateFlag.Clear();
for (int i = 0; i < m_Data.Count; i++)
{
m_LastData.Add(m_Data[i]);
diff --git a/Runtime/RadarChart.cs b/Runtime/RadarChart.cs
index d1295890..6c49234c 100644
--- a/Runtime/RadarChart.cs
+++ b/Runtime/RadarChart.cs
@@ -16,7 +16,7 @@ namespace XCharts
[ExecuteInEditMode]
[RequireComponent(typeof(RectTransform))]
[DisallowMultipleComponent]
- public class RadarChart : BaseChart
+ public partial class RadarChart : BaseChart
{
private const string INDICATOR_TEXT = "indicator";
@@ -24,21 +24,6 @@ namespace XCharts
private List m_CheckRadars = new List();
private bool m_IsEnterLegendButtom;
- public List radars { get { return m_Radars; } }
-
- ///
- /// 移除所有数据,包含指示器数据。
- ///
- public override void RemoveData()
- {
- base.RemoveData();
- foreach (var radar in m_Radars)
- {
- radar.indicatorList.Clear();
- }
- m_CheckRadars.Clear();
- }
-
protected override void OnLegendButtonClick(int index, string legendName, bool show)
{
bool active = CheckDataShow(legendName, show);