在Unity中使用uGUI绘制自定义图形(饼状图 雷达图)

本文介绍了如何在Unity中使用uGUI来绘制自定义图形,如饼状图和雷达图。通过UIPropWidget.cs代码示例,详细讲解了设置UIVertex的重要性,特别是position属性,以及顶点数目的限制。此外,还提到了自定义形状控件的实现方式,包括重载Graphic以及利用BaseVertexEffect组件来修改顶点信息。最后,更新了适用于5.2 API的简化代码。
摘要由CSDN通过智能技术生成

        饼状图或者是雷达图是根据属性自动生成的自定义图形。这里展示了如何使用uGUI完成这一功能。



      先附上我制作雷达图的控件的代码  UIPropWidget.cs

using UnityEngine;
using System.Collections.Generic;
using UnityEngine.UI;

/*
 * 
 *          2 6
 * 
 *   3                 7
 * 
 *      0   1 5    4
 *      
 * 
 * 2 6位为属性0    3为属性1    0为属性2     4为属性3     7为属性4
*/

public class UIPropWidget : Graphic
{
    private enum AnimationStatus
    {
        NOT_START,
        ANIMATING,
        FINISH,
    }
    public List<Vector2> _maxPropVector;
    public List<int> _testProp;
    public bool _withAnimation = true;

    private const int VERTEX_SIZE = 8;                  // 必须为4的倍数  通过绘制两个四边形组成一个五边形
    private const float ANIMATION_TIME = 0.8f;
    private const float MAX_PROP_VALUE = 100.0f;

    private List<Vector2> _propList = new List<Vector2>();
    private List<Vector2> _currentList = new List<Vector2>();

    private List<UIVertex> _vertexList = new List<UIVertex>();

    private bool _isStartAnimation = false;
    private bool _isAnimationFinish = false;
    private bool _isSetValue = false;

    private float _startTime = 0;
    private float _currentTime = 0;

    protected void Awake()
    {
        _isStartAnimation = false;
        _isAnimationFinish = false;
        _isSetValue = false;

        for (int i = 0; i < VERTEX_SIZE; ++i) {
            _propList.Add(Vector2.zero);
            _currentList.Add(Vector2.zero);
        }
    }

    // 设置五个属性值
    public void SetPropList(List<int> list, bool withAnimation = false)
    {
        if (list.Count < 5) {
            Log.Error("必须提供5个属性");
            return;
        }

        // 给每个属性顶点赋值
        _propList[0] = (_maxPropVector[0] - Vector2.zero) * list[2] / MAX_PROP_VALUE;
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值