using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Kill.UI.Components { /// /// 雷达热力图演示脚本 /// 角度范围:0-180度,左侧0度,正上方90度,右侧180度 /// public class RadarHeatmapDemo : MonoBehaviour { [Header("热力图组件")] public RadarHeatmap heatmap; [Header("测试数据")] [Tooltip("测试数据点数量")] public int testDataCount = 5; [Tooltip("随机生成数据")] public bool randomData = true; [Header("UI控制")] public Button generateBtn; public Button clearBtn; public Text infoText; private void Start() { if (heatmap == null) { heatmap = GetComponent(); } // 绑定按钮事件 if (generateBtn != null) { generateBtn.onClick.AddListener(GenerateTestData); } if (clearBtn != null) { clearBtn.onClick.AddListener(ClearData); } // 初始生成测试数据 GenerateTestData(); } /// /// 生成测试数据 /// public void GenerateTestData() { List dataList = new List(); if (randomData) { // 随机生成数据(0-180度范围) for (int i = 0; i < testDataCount; i++) { float angle = Random.Range(60f, 120f); float distance = Random.Range(0.1f, 1f); dataList.Add(new RadarHeatmap.HeatmapData(angle, distance)); } } else { // 固定测试数据 - 模拟不同方向的目标 dataList.Add(new RadarHeatmap.HeatmapData(0f, 0.3f)); // 左侧 dataList.Add(new RadarHeatmap.HeatmapData(30f, 0.5f)); // 左上偏左 dataList.Add(new RadarHeatmap.HeatmapData(60f, 0.7f)); // 左上偏上 dataList.Add(new RadarHeatmap.HeatmapData(90f, 0.4f)); // 正上方 dataList.Add(new RadarHeatmap.HeatmapData(120f, 0.6f)); // 右上偏上 dataList.Add(new RadarHeatmap.HeatmapData(150f, 0.8f)); // 右上偏右 dataList.Add(new RadarHeatmap.HeatmapData(180f, 0.2f)); // 右侧 } heatmap.SetData(dataList); if (infoText != null) { infoText.text = $"数据点数量: {dataList.Count}"; } Debug.Log($"[RadarHeatmapDemo] 生成了 {dataList.Count} 个测试数据点"); } /// /// 清除数据 /// public void ClearData() { heatmap.ClearData(); if (infoText != null) { infoText.text = "数据已清除"; } Debug.Log("[RadarHeatmapDemo] 数据已清除"); } /// /// 添加单个数据点(可用于实时更新) /// public void AddRandomPoint() { float angle = Random.Range(0f, 180f); float distance = Random.Range(0.1f, 1f); heatmap.AddDataPoint(new RadarHeatmap.HeatmapData(angle, distance)); if (infoText != null) { infoText.text = $"数据点数量: {heatmap.GetDataPointCount()}"; } } private void OnDestroy() { if (generateBtn != null) { generateBtn.onClick.RemoveListener(GenerateTestData); } if (clearBtn != null) { clearBtn.onClick.RemoveListener(ClearData); } } } }