diff --git a/Documentation~/en/api.md b/Documentation~/en/api.md index 0424493e..599effa0 100644 --- a/Documentation~/en/api.md +++ b/Documentation~/en/api.md @@ -340,7 +340,7 @@ slug: /api |SetSeriePainterMaterial()||public void SetSeriePainterMaterial(Material material)
设置Serie Painter的材质球 | |SetTopPainterMaterial()||public void SetTopPainterMaterial(Material material)
设置Top Painter的材质球 | |SetUpperPainterMaterial()||public void SetUpperPainterMaterial(Material material)
设置Upper Painter的材质球 | -|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(int dataIndex)
trigger tooltip by data index. | +|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(int dataIndex, int serieIndex = 0)
trigger tooltip by data index. | |TriggerTooltip()|v3.7.0|public bool TriggerTooltip(Vector3 localPosition)
trigger tooltip by chart local position. | |TryAddChartComponent()||public bool TryAddChartComponent(Type type)| |TryAddChartComponent<T>()||public bool TryAddChartComponent<T>() where T : MainComponent| diff --git a/Documentation~/zh/api.md b/Documentation~/zh/api.md index c89e9ef7..6acc461a 100644 --- a/Documentation~/zh/api.md +++ b/Documentation~/zh/api.md @@ -340,7 +340,7 @@ slug: /api |SetSeriePainterMaterial()||public void SetSeriePainterMaterial(Material material)
设置Serie Painter的材质球 | |SetTopPainterMaterial()||public void SetTopPainterMaterial(Material material)
设置Top Painter的材质球 | |SetUpperPainterMaterial()||public void SetUpperPainterMaterial(Material material)
设置Upper Painter的材质球 | -|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(int dataIndex)
尝试触发指定数据项的Tooltip. | +|TriggerTooltip()|v3.7.0|public bool TriggerTooltip(int dataIndex, int serieIndex = 0)
尝试触发指定数据项的Tooltip. | |TriggerTooltip()|v3.7.0|public bool TriggerTooltip(Vector3 localPosition)
在指定的位置尝试触发Tooltip. | |TryAddChartComponent()||public bool TryAddChartComponent(Type type)| |TryAddChartComponent<T>()||public bool TryAddChartComponent<T>() where T : MainComponent| diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index 20f5e8fa..5fc99394 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -68,6 +68,7 @@ slug: /changelog ## master +* (2023.09.05) 修复`Ring`的`TriggerTooltip()`接口无效的问题 * (2023.09.05) 修复`Radar`数据全为0时绘制报错的问题 ## v3.8.0 diff --git a/Runtime/Internal/BaseChart.API.cs b/Runtime/Internal/BaseChart.API.cs index c1d4de97..6c502c28 100644 --- a/Runtime/Internal/BaseChart.API.cs +++ b/Runtime/Internal/BaseChart.API.cs @@ -671,11 +671,12 @@ namespace XCharts.Runtime /// |尝试触发指定数据项的Tooltip. /// /// 数据项索引 + /// Serie索引,默认为第0个Serie /// [Since("v3.7.0")] - public bool TriggerTooltip(int dataIndex) + public bool TriggerTooltip(int dataIndex, int serieIndex = 0) { - var serie = GetSerie(0); + var serie = GetSerie(serieIndex); if (serie == null) return false; var dataPoints = serie.context.dataPoints; var dataPoint = Vector3.zero; diff --git a/Runtime/Serie/Ring/RingHandler.cs b/Runtime/Serie/Ring/RingHandler.cs index 9ca6ccc9..40fc8c40 100644 --- a/Runtime/Serie/Ring/RingHandler.cs +++ b/Runtime/Serie/Ring/RingHandler.cs @@ -99,7 +99,7 @@ namespace XCharts.Runtime param.color = color; param.marker = SerieHelper.GetItemMarker(serie, serieData, marker); param.itemFormatter = SerieHelper.GetItemFormatter(serie, serieData, itemFormatter); - param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); ; + param.numericFormatter = SerieHelper.GetNumericFormatter(serie, serieData, numericFormatter); param.columns.Clear(); param.columns.Add(param.marker); @@ -111,7 +111,7 @@ namespace XCharts.Runtime private Vector3 GetLabelLineEndPosition(Serie serie, SerieData serieData, LabelLine labelLine) { - if (labelLine == null || !labelLine.show) + if (labelLine == null || !labelLine.show) return serieData.context.labelLinePosition; var isRight = !serie.clockwise; var dire = isRight ? Vector3.right : Vector3.left; @@ -207,10 +207,13 @@ namespace XCharts.Runtime var startDegree = GetStartAngle(serie); var toDegree = GetToAngle(serie, degree); var insideRadius = outsideRadius - ringWidth; + var halfAngle = startDegree + (toDegree - startDegree) / 2; + var halfRadius = (outsideRadius + insideRadius) / 2; serieData.context.startAngle = startDegree; serieData.context.toAngle = toDegree; serieData.context.insideRadius = insideRadius; serieData.context.outsideRadius = serieData.radius > 0 ? serieData.radius : outsideRadius; + serieData.context.position = ChartHelper.GetPosition(serie.context.center, halfAngle, halfRadius); UpdateLabelPosition(serieData); } AvoidLabelOverlap();