using ChartAndGraph; using UnityEngine; namespace Assets.Scripts.Scenes.VideoRide { public class ElevationBarDataFeed : MonoBehaviour { GameObject head { get; set; } VideoGameManager manager { get; set; } [SerializeField] Material _lightColor; [SerializeField] Material _mediumColor; [SerializeField] Material _hardColor; [SerializeField] Material _heavyColor; void Start() { head = transform.Find("HeadPanel").gameObject; manager= FindObjectOfType(); BarChart barChart = GetComponent(); barChart.DataSource.ClearCategories(); barChart.DataSource.ClearValues(); if (barChart != null) { var list = manager.GetMapData().List; for (int i = 0; i < list.Count; i++) { barChart.DataSource.AddCategory($"Player {i}", getChartMaterial(list[i].Grade)); barChart.DataSource.SetValue($"Player {i}", "Group 1", list[i].Grade); } } } float timer = 1f; private void Update() { timer -= Time.deltaTime; while (timer < 0) { MoveCurrentPlayerHead(); //MoveOnlinePlayerHead(); TODO timer += 1f; } } //移动当前骑行者头像 private void MoveCurrentPlayerHead() { var videoPlayer = manager.CurrentPlayer; var index = videoPlayer != null ? videoPlayer.currentIndex : 0; BarChart barChart = GetComponent(); Vector3 vector3 = Vector3.back; barChart.GetBarTrackPosition($"Player {index}", "Group 1", out vector3); head.transform.position = vector3; } //移动当前线上其他人头像 private void MoveOnlinePlayerHead() { var videoPlayer = manager.CurrentPlayer; if (videoPlayer != null) { BarChart barChart = GetComponent(); Vector3 vector3 = Vector3.back; barChart.GetBarTrackPosition($"Player {videoPlayer.currentIndex}", "Group 1", out vector3); head.transform.position = vector3; } } private ChartDynamicMaterial getChartMaterial(double grade = 0d) { //1: ≥7°坡 红色 //2: 3°~7°坡 橙色 //3: 0°~3°坡 黄色 //4: ≤0°坡 绿色 ChartDynamicMaterial chartDynamicMaterial; if (grade > 7) { chartDynamicMaterial = new ChartDynamicMaterial(_heavyColor); } else if (grade > 3) { chartDynamicMaterial = new ChartDynamicMaterial(_hardColor); } else if (grade > 0) { chartDynamicMaterial = new ChartDynamicMaterial(_mediumColor); } else { chartDynamicMaterial = new ChartDynamicMaterial(_lightColor); } return chartDynamicMaterial; } } }