using System.Collections; using UnityEngine; using XCharts.Runtime; namespace XCharts.Example { [DisallowMultipleComponent] public class Example20_BarChart : MonoBehaviour { private BarChart chart; private Serie serie, serie2; private int m_DataNum = 5; void Awake() { LoopDemo(); } private void OnEnable() { LoopDemo(); } void LoopDemo() { StopAllCoroutines(); StartCoroutine(PieDemo()); } IEnumerator PieDemo() { StartCoroutine(AddSimpleBar()); yield return new WaitForSeconds(2); StartCoroutine(BarMutilSerie()); yield return new WaitForSeconds(3); StartCoroutine(ZebraBar()); yield return new WaitForSeconds(3); StartCoroutine(SameBarAndNotStack()); yield return new WaitForSeconds(3); StartCoroutine(SameBarAndStack()); yield return new WaitForSeconds(3); StartCoroutine(SameBarAndPercentStack()); yield return new WaitForSeconds(10); LoopDemo(); } IEnumerator AddSimpleBar() { chart = gameObject.GetComponent(); if (chart == null) chart = gameObject.AddComponent(); chart.GetChartComponent().text = "BarChart - 柱状图"; chart.GetChartComponent<Title>().subText = "普通柱状图"; var yAxis = chart.GetChartComponent<YAxis>(); yAxis.minMaxType = Axis.AxisMinMaxType.Default; chart.RemoveData(); serie = chart.AddSerie<Bar>("Bar1"); for (int i = 0; i < m_DataNum; i++) { chart.AddXAxisData("x" + (i + 1)); chart.AddData(0, UnityEngine.Random.Range(30, 90)); } yield return new WaitForSeconds(1); } IEnumerator BarMutilSerie() { chart.GetChartComponent<Title>().subText = "多条柱状图"; float now = serie.barWidth - 0.35f; while (serie.barWidth > 0.35f) { serie.barWidth -= now * Time.deltaTime; chart.RefreshChart(); yield return null; } serie2 = chart.AddSerie<Bar>("Bar2"); serie2.lineType = LineType.Normal; serie2.barWidth = 0.35f; for (int i = 0; i < m_DataNum; i++) { chart.AddData(1, UnityEngine.Random.Range(20, 90)); } yield return new WaitForSeconds(1); } IEnumerator ZebraBar() { chart.GetChartComponent<Title>().subText = "斑马柱状图"; serie.barType = BarType.Zebra; serie2.barType = BarType.Zebra; serie.barZebraWidth = serie.barZebraGap = 4; serie2.barZebraWidth = serie2.barZebraGap = 4; chart.RefreshChart(); yield return new WaitForSeconds(1); } IEnumerator SameBarAndNotStack() { chart.GetChartComponent<Title>().subText = "非堆叠同柱"; serie.barType = serie2.barType = BarType.Normal; serie.stack = ""; serie2.stack = ""; serie.barGap = -1; serie2.barGap = -1; yield return new WaitForSeconds(1); } IEnumerator SameBarAndStack() { chart.GetChartComponent<Title>().subText = "堆叠同柱"; serie.barType = serie2.barType = BarType.Normal; serie.stack = "samename"; serie2.stack = "samename"; yield return new WaitForSeconds(1); float now = 0.6f - serie.barWidth; while (serie.barWidth < 0.6f) { serie.barWidth += now * Time.deltaTime; serie2.barWidth += now * Time.deltaTime; chart.RefreshChart(); yield return null; } serie.barWidth = serie2.barWidth; chart.RefreshChart(); yield return new WaitForSeconds(1); } IEnumerator SameBarAndPercentStack() { chart.GetChartComponent<Title>().subText = "百分比堆叠同柱"; serie.barType = serie2.barType = BarType.Normal; serie.stack = "samename"; serie2.stack = "samename"; serie.barPercentStack = true; serie.AddExtraComponent<LabelStyle>(); serie.label.show = true; serie.label.position = LabelStyle.Position.Center; serie.label.textStyle.color = Color.white; serie.label.formatter = "{d:f0}%"; serie2.label.show = true; serie2.label.position = LabelStyle.Position.Center; serie2.label.textStyle.color = Color.white; serie2.label.formatter = "{d:f0}%"; serie2.labelDirty = true; chart.RefreshChart(); yield return new WaitForSeconds(1); } } }