自我介绍
广东双非一本的大三小白,计科专业,想在制作毕设前夯实基础,毕设做出一款属于自己的游戏!
雷达图
先来看看效果图
要达到这个效果只需要三个脚本,一个是管理所有雷达点的,一个是控制单个雷达点的,还有一个是在Editor
- RadarChartHandler.cs 单个雷达点,并不需要加载到任何一个物体上,由管理器来管理加载
- RadarChart.cs 管理多个雷达点
- RadarChartEditor.cs 编辑器
RadarChartHandler.cs
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class RadarChartHandler : MonoBehaviour, IDragHandler
{
private Image _image;
private Image Image
{
get
{
if (_image == null) _image = GetComponent<Image>();
return _image;
}
}
private RectTransform _rect;
private RectTransform Rect
{
get
{
if (_rect == null) _rect = GetComponent<RectTransform>();
return _rect;
}
}
public void SetParent(Transform parent) => transform.SetParent(parent);
public void ChangeSprite(Sprite sprite) => Image.sprite = sprite;
public void ChangeColor(Color color) => Image.color = color;
public void SetPos(Vector2 pos) => Rect.anchoredPosition = pos;
public void SetSize(Vector2 size) => Rect.sizeDelta = size;
public void SetScale(Vector3 scale) => Rect.localScale = scale;
public void OnDrag(PointerEventData eventData)
{
Rect.anchoredPosition += eventData.delta / Rect.lossyScale.x;
}
}
RadarChart.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class RadarChart : Image
{
[SerializeField] int _pointCount; //点的数量
[SerializeField] List