diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index bea460d3..5dd34e6a 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -80,6 +80,7 @@ slug: /changelog ## master +* (2026.01.15) 修复`Pie`的点击有时候不响应的问题 (#357) * (2026.01.08) 增加`DataZoom`的`minZoomRatio`替换旧的`minShowNum` (#350) * (2025.11.05) 修复`Axis`的`indicatorLabel`无法隐藏的问题 * (2025.11.03) 增加`Tooltip`的`Title`可通过`TitleLabelStyle`的`numericFormatter`格式化时间显示 (#353) diff --git a/Runtime/Serie/Pie/PieHandler.cs b/Runtime/Serie/Pie/PieHandler.cs index f9fba3fc..0e30f5c3 100644 --- a/Runtime/Serie/Pie/PieHandler.cs +++ b/Runtime/Serie/Pie/PieHandler.cs @@ -271,6 +271,7 @@ namespace XCharts.Runtime } var offset = 0f; var interactOffset = serie.animation.interaction.GetOffset(serie.context.outsideRadius); + serieData.context.insideRadius = serie.context.insideRadius; if (serie.pieClickOffset && (serieData.selected || serieData.context.selected)) { offset += interactOffset; @@ -554,10 +555,11 @@ namespace XCharts.Runtime var dist = Vector2.Distance(local, serie.context.center); var interactOffset = serie.animation.interaction.GetOffset(serie.context.outsideRadius); - var maxRadius = serie.context.outsideRadius + 2 * interactOffset; - if (dist < serie.context.insideRadius || dist > maxRadius) + var maxRadius = serie.context.outsideRadius + interactOffset; + if (dist < serie.context.insideRadius - interactOffset || dist > maxRadius) + { return -1; - + } var dir = local - new Vector2(serie.context.center.x, serie.context.center.y); var angle = ChartHelper.GetAngle360(Vector2.up, dir); for (int i = 0; i < serie.data.Count; i++) @@ -568,7 +570,8 @@ namespace XCharts.Runtime var ndist = (serieData.selected || serieData.context.selected) ? Vector2.Distance(local, serieData.context.offsetCenter) : dist; - if (ndist >= serieData.context.insideRadius && ndist <= serieData.context.outsideRadius) + ndist = dist; + if (ndist >= serieData.context.insideRadius - interactOffset && ndist <= serieData.context.outsideRadius) { return i; }