133 lines
3.9 KiB
C#
133 lines
3.9 KiB
C#
|
|
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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|