killapp/Assets/Scripts/UI/Components/RadarHeatmapDemo.cs
“虞渠成” 7b5272b468 0608
2026-06-08 08:55:10 +08:00

133 lines
3.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}
}