private void DrawLabel(Serie serie, int dataIndex, SerieData serieData, Color serieColor) { if (serieData.labelText == null) { return; } var currAngle = serieData.runtimePieHalfAngle; var isHighlight = (serieData.highlighted && serie.emphasis.label.show); var showLabel = ((serie.label.show || isHighlight) && serieData.canShowLabel); if (showLabel || serieData.iconStyle.show) { serieData.SetLabelActive(showLabel); float rotate = 0; bool isInsidePosition = serie.label.position == SerieLabel.Position.Inside; if (serie.label.rotate > 0 && isInsidePosition) { if (currAngle > 180) { rotate += 270 - currAngle; } else { rotate += -(currAngle - 90); } } Color color = serieColor; if (isHighlight) { if (serie.emphasis.label.color != Color.clear) { color = serie.emphasis.label.color; } } else if (serie.label.color != Color.clear) { color = serie.label.color; } else { color = isInsidePosition ? Color.white : serieColor; } var fontSize = isHighlight ? serie.emphasis.label.fontSize : serie.label.fontSize; var fontStyle = isHighlight ? serie.emphasis.label.fontStyle : serie.label.fontStyle; serieData.labelText.color = color; serieData.labelText.fontSize = fontSize; serieData.labelText.fontStyle = fontStyle; serieData.labelRect.transform.localEulerAngles = new Vector3(0, 0, rotate); UpdateLabelPostion(serie, serieData); if (!string.IsNullOrEmpty(serie.label.formatter)) { var value = serieData.data[1]; var total = serie.yTotal; var content = serie.label.GetFormatterContent(serie.name, serieData.name, value, total); if (serieData.SetLabelText(content)) { RefreshChart(); } } serieData.SetGameObjectPosition(serieData.labelPosition); if (showLabel) { serieData.SetLabelPosition(serie.label.offset); } } else { serieData.SetLabelActive(false); } serieData.UpdateIcon(); }