Unity 使用代码生成饼状图 PieChart

[Unity][UGUI]UGUI的饼状统计图 参考资料1里面有 Unity 商店 AssestStore 现成的插件。但是鉴于 囊中羞涩。参考资料2,3的资料 相对完整。 参考资料: 1. Unity怎么用UGUI制作图表,柱状图,饼图?有现成的插件吗,推荐几款? 2. Untiy自定义UI组件 3. Unity自定义UI组件(三 阅读详情

前言:

之前工作需要实现饼状图,这里记录一下用代码生成饼状图的方法.

最终效果如图

在这里插入图片描述


原理:

1.原理很简单,通过创建网格绘制各个饼状图基块,然后按角度合成即可.
2.如何创建网格,请直接看官方文档.
3.图像分析:
在这里插入图片描述
在这里插入图片描述
4.下面是生成饼状图的核心代码:

    /// <summary>
    /// 生成饼状图.
    /// </summary>
    private void GeneratePieChart()
    {
        float rot = 360.0f / num;
        for (int i = 0; i < num; i++)
        {
            Transform child = GenerateChildPieChart(3, num, height);   //饼状图基块.
            child.localRotation = Quaternion.Euler(0, rot * i, 0);      
            child.localPosition = new Vector3(0, height / 2.0f, 0);    
            child.gameObject.layer = LayerMask.NameToLayer("UI");
            child.SetParent(m_Transform, false);
            pieChartList.Add(child);
        }
        m_Transform.localScale = Vector3.one * 20;
        m_Transform.localRotation = Quaternion.Euler(90, 0, 0);
    }

    /// <summary>
    /// 创建饼状图基块.
    /// </summary>
    /// <param name="r">半径</param>
    /// <param name="num">份数</param>
	/// <param name="height">厚度</param>
	/// <returns></returns>
    private Transform GenerateChildPieChart(float r, int num, float height)
    {
        float y = r * Mathf.Sin((180.0f / num) * Mathf.Deg2Rad);
        float x = Mathf.Sqrt(r * r - y * y);
        Vector3 origin1 = new Vector3(0, 0, 0);
        Vector3 origin2 = new Vector3(x, 0, y);
        Vector3 origin3 = new Vector3(x, 0, -y);
        Vector3 offset = new Vector3(0, height, 0);
 
        Mesh mesh = new Mesh();
        Vector3[] vertices = new Vector3[6];
        vertices[0] = origin1;                  
        vertices[1] = origin2;
        vertices[2] = origin3;
        vertices[3] = vertices[0] - offset;     
        vertices[4] = vertices[1] - offset;
        vertices[5] = vertices[2] - offset;
        int[] triangles = new int[48] {     //双面都要.
            0, 1, 2, 3, 4, 5,   //顺时针 正面.
            0, 2, 5, 0, 5, 3, 
            0, 1, 4, 0, 4, 3,
            2, 1, 4, 2, 4, 5,

            0, 2, 1, 3, 5, 4,   //逆时针 反面.
            0, 5, 2, 0, 3, 5, 
            0, 4, 1, 0, 3, 4,
            2, 4, 1, 2, 5, 4 
        };
        mesh.vertices = vertices;
        mesh.triangles = triangles;

        GameObject temp = new GameObject();
        MeshFilter meshFilter = temp.AddComponent<MeshFilter>();
        meshFilter.mesh = mesh;

        MeshRenderer meshRenderer = temp.AddComponent<MeshRenderer>();
        //meshRenderer.material.shader = Shader.Find("Diffuse");
        meshRenderer.material = material_Other;

        return temp.transform;
    }


项目代码源文件.

完毕.

在Unity中使用uGUI绘制自定义图形(饼状图 雷达图) 饼状图或者是雷达图是根据属性自动生成的自定义图形。这里展示了如何使用uGUI完成这一功能。       先附上我制作雷达图的控件的代码  UIPropWidget.cs using UnityEngine; using System.Collections.Generic; using UnityEngine.UI; /* * * 2 6 * * 阅读详情

相关推荐

使用unity实现画图(LineRenderer组件)

这篇博客通过LineRenderer组件实现画图的效果 1.LineRenderer组件介绍 首先是俩个可以相互对比的面板 我们可以对照着观察 2.搭建场景 搭建过程很简单 创建一个Plane然后旋转 正对着摄像机即可 这样在Game面版中是全白效果 3.实现代码 private LineRenderer CurretLine; public Color LineColor = C...

weixin_44302602的博客 6747

Unity自定义UI组件(三)饼图篇

Unity自定义UI组件(三)饼图篇(上) 博主在工作中曾经多次遇到过要计算并显示一些数据占比的功能,但是数值的显示不够直观,然后在Unity商店中看到有人编写过类似的UI插件,但是价格小贵,就萌发了自己编写类似插件的冲动

SpringD 8906

Unity3d绘制饼状图

using UnityEngine; public class PieChartMesh : MonoBehaviour { float[] mData; int mSlices; float mRotationAngle; float mRadius; Vector3[] mVertices; Vector3[] mNormals; V

无涯 8233

unity 饼状图

using UnityEngine; public class PieChartMesh : MonoBehaviour {     float[] mData;     int mSlices;     float mRotationAngle;     float mRadius;     Vector3[] mVertices;     Vector3[] m

lvmengmeng 1556

Unity3D交互式3D饼图UI实现攻略

本文介绍了在Unity3D中实现可交互3D饼状图UI的解决方案。通过分析对比XCharts和Unity3DGraphAndChart两款插件,最终选择后者以满足3D展示和交互需求。针对3D模型与UI元素融合的问题,提出了层级控制与场景布局的方案:创建专属渲染层级,配置UI摄像机渲染范围,精细调整3D模型位置使其视觉上融入UI界面。该方法既保留了3D图表的原生交互功能,又实现了与2D UI元素的完美融合,解决了常规RenderTexture方案导致的交互失效问题,为3D数据可视化与UI界面结合提供了可行思路。

JZAA_111_7的博客 1239

unity实现3D饼图

使用unity实现3D的饼图

xiayang1023的专栏 3922

WinForm"立体饼状图实现(附源码示例)" 之配餐系统的开发

       本文所要将的是在“配餐系统”开发中 立体饼状图效果的实现,直接贴出代码和附上示例,相信需要的朋友可以很容易使用!项目中的效果图,如下:   实现 应用的是 System.Drawing.PieChart.PieChartControl 控件, PieChartHelper类如下: 代码 using System;using System.Collections;usin...

weixin_34321753的博客 172

Unity3d 饼状图

使用Unity3d的Mesh重绘,绘制饼状图。能够实现不同比例的动态显示。

XCharts笔记:刷新动画

总结:获取到Serie再调用“重置”和“重新开始”的api。PieChart pie=获取到PieChart组件;

qq_41556243的博客 1041

T型三电平关管顺序要求

摘要: T型三电平拓扑中,IGBT关断必须遵循“外管先关、内管后关”的时序,否则易导致器件损坏。正常导通时,外管与内管共同分担电压;正确关断时,外管先关使电流经内管续流至中点,避免电压过冲;若内管先关,电流路径被强制切断,杂散电感引发高压尖峰击穿器件。这一时序本质是为电流提供低应力续流路径,需通过硬件或软件严格保障。

yun0804的博客 2382

Flutter 直接调用so动态库,或调用C/C++源文件内函数

我把 .so 文件尝试放过好几个目录/lib/,最终都会报这个错误,现在才知道库文件需要放在你根本想象不到的地方!!!尝试了一些方法还是不行后我放弃了 ffi,想着用 Flutter 的 MethodChannel 桥接 android/ios 原生,再让原生去调 native 层。一顿操作把Android端的搞定了,当然中间涉及到 Kotlin和C++ 层的数据类型映射的痛苦,而且业务函数也不像一个 helloworld 那么简单,别提有多痛苦了。

开发以大橘为重 8352

.net实现3D饼图(test源码1)

console,单图test: using System;using System.Collections.Generic;using System.Text;using qchart;namespace test...{    class Program    ...{        static void Main(string[] args)        ...{           

.NET博文收藏 426

Pixhawk RPi CM4 Baseboard 树莓派CM4安装Ubuntu20.04 server 配置ros mavros mavsdk

cm4配置ros mavros连接pixhawk4 Pixhawk RPi CM4 Baseboard

baidu_41704597的博客 2128

Unity制作饼图

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class NewBehaviourScript : MonoBehaviour { public List<GameObject> list_colo...

海涛高软 2009

Windows C语言编程:Beep API实现蜂鸣器原理与实战

如果你在 Windows 上写过 C 语言程序,想给程序加个简单的提示音,第一个想到的可能是 printf("\a") 。这个转义字符确实能在某些终端里发出“嘀”的一声,但它太原始、太不可控了,而且很多时候根本没声音。那么,有没有一种更“Windows”、更可控、更专业的方法来让你的程序“说话”呢? 答案是肯定的,而且它比你想象的要强大和复杂。Windows 提供了一个名为 Beep 的 API 函数,专门用于生成蜂鸣声。你可能觉得这功能太简单,甚至有点过时——不就是让电脑“哔”一声吗?但恰恰是这个看似简单

weixin_34109408的博客 395

Hadoop实战:用MapReduce分析YouTube视频数据集(附完整代码)

本文提供了一个完整的Hadoop MapReduce实战教程,指导读者使用MapReduce框架分析YouTube视频数据集,统计不同视频类别的数量分布。教程涵盖从数据获取、预处理、HDFS操作到Java代码编写、作业提交及结果可视化的全流程,并附有完整代码,帮助开发者深入理解分布式计算思想。

lilh34434的博客 200

Unity_扇形图(饼状图)+ UI动画

Unity、扇形图、饼状图

⭐ 4062

【Mode】微带传输线阻抗

微带线,英文名称为 (Microstrip) 是一种常见的平面传输线,主要用于传输微波频率信号(通常在射频和微波电路重中使用)。

u011699626的博客 245

Unity-UGUI-XCharts饼图示例详解:从基础到高级应用

在Unity游戏开发中,数据可视化是一个重要环节,而饼图作为最常用的图表类型之一,能够直观地展示数据占比关系。本文将深入解析Unity-UGUI-XCharts中的饼图实现示例,帮助开发者掌握从基础饼图到高级变体的实现方法。 ## 基础饼图实现 示例代码首先展示了如何创建一个基础的饼图: ```csharp chart = gameObject.AddComponent(...

gitblog_00186的博客 603

【信息科学与工程学】【物理/化学科学和工程技术】第八篇 光学07

对于光源-探测器距离 ρ, 稳态漫反射率 R(ρ) ≈ (1/(4π)) [ z₀ (μ_eff + 1/r₁) exp(-μ_eff r₁)/r₁² + (z₀ + 2z_b) (μ_eff + 1/r₂) exp(-μ_eff r₂)/r₂² ], 其中 μ_eff = √(3μ_a(μ_a+μ_s’)), z₀=1/μ_s’, z_b 与边界条件有关。通过测量光纤各点的布里渊频移 ν_B(z) 来得到应变/温度分布:Δν_B(z) = C_ν,ε Δε(z) + C_ν,T ΔT(z)。

weixin_49199313的博客 330

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

2023年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题4)-网络部分解析-附详细代码

bfq05234214的博客 441

Unity 3D饼状图效果

四. 子节点上添加MeshRender和MeshFilter组件, 把DrawCylinder脚本挂在每个子节点上,调整参数,count占的份额,总份额是360,index是索引。注意,子节点上面显示的count和index,需要和DrawCylinder类里面的Counts列表索引和数额对应一样。

zcc858079762的博客 887

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Unity Shader实现3D饼图

怀这一些堕落和伤感写下这篇文章,今天写想用Shader写一个3D饼图效果,居然没有想到别的更高效的写法,功能实现了更效率不高。希望看到此文章有更好实现方式的请私信我,谢谢。 只需要哒到如下效果即可。 下面是原代码: Shader "Custom/PieGraph" { Properties{ _element1("element%1",Range(0.00,100.00))=0 _el...

盖子的博客 1356

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【Unity开发】饼状图数据处理展示

Unity数据可视化开发:饼状图与柱状图实现 本文介绍了在Unity中实现数据可视化的方法,重点讲解了饼状图和柱状图的开发流程。通过预制体和脚本控制,可以灵活展示单组或多组数据,并支持多种自定义选项: 饼状图功能:支持颜色、数值显示方式(百分比/实际值)、实心/空心样式、颜色过渡等配置 多组数据处理:通过StatisticManager脚本批量生成并管理多个饼状图实例 资源准备:需准备圆形和圆圈图片素材,设置Image组件参数 扩展性:采用继承架构设计,便于后续添加折线图等其他图表类型 文末提供了1.0和2

为者常成,行者常至! 1316

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【原创】unity xchart bar,ring ,pie等预制体添加数据实现

using System.Collections; using System.Collections.Generic; using UnityEngine; using XCharts.Runtime; public class TestChart : MonoBehaviour { public GameObject uiGameObject; // Start is cal...

情随事迁个人博客 403

Unity 模型描边的几种方法. (Shader、GL、代码生成描绘边)

前言 1、前段时间工作,需要给模型描边,由于对Shader不熟悉,就直接网上找了描边Shader文件,无奈项目发布环境是WebGL,WebGL对Shader的需求比较特殊,故无法使用。 2、因为项目需要描边的物体并不多,所以萌生出,动态生成整个模型所有的边(线条),给各个边附上需要的材质球即可。(当然,也可以直接请美术在模型上描边,但这样不能实现泛光之类的效果) 3、现写下三种实现模型描边的方法,方便日后查看学习与使用。 实现 1、GL描边 原理比较简单,就是获取到模型的所有顶点,然后使用GL连线.

ToToTofu的博客 1万+
上一篇: Unity 限制物体旋转角度的坑
下一篇: Unity UGUI ScrollView无限滚动效果
假面骑士!
博客等级 码龄8年 24粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值