Example40_Radar.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using XCharts.Runtime;
  5. namespace XCharts.Example
  6. {
  7. [DisallowMultipleComponent]
  8. public class Example40_Radar : MonoBehaviour
  9. {
  10. private RadarChart chart;
  11. private Serie serie, serie1;
  12. void Awake()
  13. {
  14. LoopDemo();
  15. }
  16. private void OnEnable()
  17. {
  18. LoopDemo();
  19. }
  20. void LoopDemo()
  21. {
  22. StopAllCoroutines();
  23. StartCoroutine(RadarDemo());
  24. }
  25. IEnumerator RadarDemo()
  26. {
  27. StartCoroutine(RadarAdd());
  28. yield return new WaitForSeconds(2);
  29. StartCoroutine(RadarUpdate());
  30. yield return new WaitForSeconds(2);
  31. StartCoroutine(RadarAddMultiple());
  32. yield return new WaitForSeconds(2);
  33. LoopDemo();
  34. }
  35. IEnumerator RadarAdd()
  36. {
  37. chart = gameObject.GetComponent<RadarChart>();
  38. if (chart == null)
  39. {
  40. chart = gameObject.AddComponent<RadarChart>();
  41. chart.Init();
  42. }
  43. chart.RemoveChartComponents<RadarCoord>();
  44. chart.RemoveData();
  45. chart.GetChartComponent<Title>().text = "RadarChart - 雷达图";
  46. chart.GetChartComponent<Title>().subText = "";
  47. var legend = chart.GetChartComponent<Legend>();
  48. legend.show = true;
  49. legend.location.align = Location.Align.TopLeft;
  50. legend.location.top = 60;
  51. legend.location.left = 2;
  52. legend.itemWidth = 70;
  53. legend.itemHeight = 20;
  54. legend.orient = Orient.Vertical;
  55. var radarCoord = chart.AddChartComponent<RadarCoord>();
  56. radarCoord.shape = RadarCoord.Shape.Polygon;
  57. radarCoord.center[0] = 0.5f;
  58. radarCoord.center[1] = 0.4f;
  59. radarCoord.radius = 0.4f;
  60. radarCoord.AddIndicator("indicator1", 0, 100);
  61. radarCoord.AddIndicator("indicator2", 0, 100);
  62. radarCoord.AddIndicator("indicator3", 0, 100);
  63. radarCoord.AddIndicator("indicator4", 0, 100);
  64. radarCoord.AddIndicator("indicator5", 0, 100);
  65. serie = chart.AddSerie<Radar>("test");
  66. serie.radarIndex = 0;
  67. chart.AddData(0, new List<double> { 10, 20, 60, 40, 20 }, "data1");
  68. chart.AddData(0, new List<double> { 40, 60, 90, 80, 70 }, "data2");
  69. yield return new WaitForSeconds(1);
  70. }
  71. IEnumerator RadarUpdate()
  72. {
  73. var radarCoord = chart.GetChartComponent<RadarCoord>();
  74. radarCoord.UpdateIndicator(0, "new1", 0, 100);
  75. chart.UpdateData(0, 0, new List<double> { 15, 30, 50, 60, 50 });
  76. chart.UpdateDataName(0, 0, "new1");
  77. yield return new WaitForSeconds(1);
  78. }
  79. IEnumerator RadarAddMultiple()
  80. {
  81. chart.RemoveChartComponents<RadarCoord>();
  82. chart.RemoveData();
  83. chart.GetChartComponent<Title>().text = "RadarChart - 多雷达图";
  84. chart.GetChartComponent<Title>().subText = "";
  85. var legend = chart.GetChartComponent<Legend>();
  86. legend.show = true;
  87. legend.location.align = Location.Align.TopLeft;
  88. legend.location.top = 60;
  89. legend.location.left = 2;
  90. legend.itemWidth = 70;
  91. legend.itemHeight = 20;
  92. legend.orient = Orient.Vertical;
  93. var radarCoord = chart.AddChartComponent<RadarCoord>();
  94. radarCoord.shape = RadarCoord.Shape.Polygon;
  95. radarCoord.center[0] = 0.25f;
  96. radarCoord.center[1] = 0.4f;
  97. radarCoord.radius = 0.25f;
  98. for (int i = 1; i <= 5; i++)
  99. {
  100. radarCoord.AddIndicator("radar1" + i, 0, 100);
  101. }
  102. var radarCoord2 = chart.AddChartComponent<RadarCoord>();
  103. radarCoord2.shape = RadarCoord.Shape.Polygon;
  104. radarCoord2.center[0] = 0.75f;
  105. radarCoord2.center[1] = 0.4f;
  106. radarCoord2.radius = 0.25f;
  107. for (int i = 1; i <= 5; i++)
  108. {
  109. radarCoord2.AddIndicator("radar2" + i, 0, 100);
  110. }
  111. serie = chart.AddSerie<Radar>("test1");
  112. serie.radarIndex = 0;
  113. chart.AddData(0, new List<double> { 10, 20, 60, 40, 20 }, "data1");
  114. serie1 = chart.AddSerie<Radar>("test2");
  115. serie1.radarIndex = 1;
  116. chart.AddData(1, new List<double> { 10, 20, 60, 40, 20 }, "data2");
  117. yield return new WaitForSeconds(1);
  118. }
  119. }
  120. }