killapp/Assets/Scripts/UI/Components/RadarHeatmapDemo.cs

133 lines
3.9 KiB
C#
Raw Permalink Normal View History

2026-06-08 08:55:10 +08:00
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Kill.UI.Components
{
/// <summary>
/// 雷达热力图演示脚本
/// 角度范围0-180度左侧0度正上方90度右侧180度
/// </summary>
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<RadarHeatmap>();
}
// 绑定按钮事件
if (generateBtn != null)
{
generateBtn.onClick.AddListener(GenerateTestData);
}
if (clearBtn != null)
{
clearBtn.onClick.AddListener(ClearData);
}
// 初始生成测试数据
GenerateTestData();
}
/// <summary>
/// 生成测试数据
/// </summary>
public void GenerateTestData()
{
List<RadarHeatmap.HeatmapData> dataList = new List<RadarHeatmap.HeatmapData>();
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} 个测试数据点");
}
/// <summary>
/// 清除数据
/// </summary>
public void ClearData()
{
heatmap.ClearData();
if (infoText != null)
{
infoText.text = "数据已清除";
}
Debug.Log("[RadarHeatmapDemo] 数据已清除");
}
/// <summary>
/// 添加单个数据点(可用于实时更新)
/// </summary>
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);
}
}
}
}