From 0ffc6d7efeae44da71f583d65184515a16a86979 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Mon, 31 Jul 2023 07:29:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96`Line`=E7=9A=84=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E9=85=8D=E7=BD=AE=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Documentation~/zh/changelog.md | 1 + Examples/Example_TestSerie.cs | 9 ++++++++- Runtime/Serie/Line/Line.cs | 1 + Runtime/Serie/Serie.cs | 3 ++- Runtime/Serie/SerieHandler.cs | 5 +++++ Runtime/Serie/SerieHelper.cs | 4 ++-- 6 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index 0e29e75e..b01e6d4e 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -74,6 +74,7 @@ slug: /changelog 日志详情: +* (2023.07.31) 优化`Line`的默认配置效果 * (2023.07.27) 增加`Serie`的`minRadius`可设置最小半径 * (2023.07.26) 增加`MLValue`多样式数值 * (2023.07.25) 增加`XLog`日志系统 diff --git a/Examples/Example_TestSerie.cs b/Examples/Example_TestSerie.cs index 43ce786b..ed0e7269 100644 --- a/Examples/Example_TestSerie.cs +++ b/Examples/Example_TestSerie.cs @@ -8,7 +8,6 @@ namespace XCharts.Example [DisallowMultipleComponent] public class Example_TestSerie : MonoBehaviour { - public int maxCache = 100; BaseChart chart; int timestamp; @@ -23,6 +22,14 @@ namespace XCharts.Example chart.GetSerie(0).radius[1] = Random.Range(50, 80); chart.SetAllDirty(); } + else if (Input.GetKeyDown(KeyCode.W)) + { + chart.GetSerie(0).lineStyle.width = Random.Range(1, 5); + } + else if (Input.GetKeyDown(KeyCode.S)) + { + chart.GetSerie(0).symbol.size = Random.Range(1, 10); + } } } } \ No newline at end of file diff --git a/Runtime/Serie/Line/Line.cs b/Runtime/Serie/Line/Line.cs index 395ef27b..3a928bde 100644 --- a/Runtime/Serie/Line/Line.cs +++ b/Runtime/Serie/Line/Line.cs @@ -31,6 +31,7 @@ namespace XCharts.Runtime { var serie = chart.AddSerie(serieName); serie.symbol.show = true; + serie.animation.interaction.radius.value = 1.5f; for (int i = 0; i < 5; i++) { chart.AddData(serie.index, UnityEngine.Random.Range(10, 90)); diff --git a/Runtime/Serie/Serie.cs b/Runtime/Serie/Serie.cs index d7cc8346..103d2bd6 100644 --- a/Runtime/Serie/Serie.cs +++ b/Runtime/Serie/Serie.cs @@ -1044,7 +1044,7 @@ namespace XCharts.Runtime public override void SetVerticesDirty() { base.SetVerticesDirty(); - handler.ForceUpdateSerieContext(); + interactDirty = true; } private bool AnySerieDataVerticesDirty() @@ -1082,6 +1082,7 @@ namespace XCharts.Runtime public bool labelDirty { get; set; } public bool titleDirty { get; set; } public bool dataDirty { get; set; } + public bool interactDirty { get; set; } private void SetSerieNameDirty() { diff --git a/Runtime/Serie/SerieHandler.cs b/Runtime/Serie/SerieHandler.cs index 648c4d09..f89c3a49 100644 --- a/Runtime/Serie/SerieHandler.cs +++ b/Runtime/Serie/SerieHandler.cs @@ -132,6 +132,11 @@ namespace XCharts.Runtime serie.ResetInteract(); serie.ClearVerticesDirty(); } + if (serie.interactDirty) + { + serie.interactDirty = false; + m_ForceUpdateSerieContext = true; + } UpdateSerieContextInternal(); } diff --git a/Runtime/Serie/SerieHelper.cs b/Runtime/Serie/SerieHelper.cs index 8d4fccf4..4c9b435c 100644 --- a/Runtime/Serie/SerieHelper.cs +++ b/Runtime/Serie/SerieHelper.cs @@ -646,7 +646,7 @@ namespace XCharts.Runtime if (stateStyle == null) { var itemStyle = GetItemStyle(serie, serieData, SerieState.Normal); - border = itemStyle.borderWidth != 0 ? itemStyle.borderWidth : serie.lineStyle.GetWidth(theme.serie.lineWidth); + border = itemStyle.borderWidth != 0 ? itemStyle.borderWidth : serie.lineStyle.GetWidth(theme.serie.lineWidth) * 1.8f; cornerRadius = itemStyle.cornerRadius; GetColor(ref borderColor, itemStyle.borderColor, itemStyle.borderColor, 1, theme, -1); switch (state) @@ -667,7 +667,7 @@ namespace XCharts.Runtime else { var itemStyle = stateStyle.itemStyle; - border = itemStyle.borderWidth != 0 ? itemStyle.borderWidth : stateStyle.lineStyle.GetWidth(theme.serie.lineWidth); + border = itemStyle.borderWidth != 0 ? itemStyle.borderWidth : stateStyle.lineStyle.GetWidth(theme.serie.lineWidth) * 1.8f; cornerRadius = itemStyle.cornerRadius; GetColor(ref borderColor, stateStyle.itemStyle.borderColor, ColorUtil.clearColor32, 1, theme, -1); }