【GraphMaker】Unity3D图表——柱状图、折线图、饼图
http://blog.csdn.net/yongh701/article/details/71637090?utm_source=itdadao&utm_medium=referral
版权声明:本文为博主原创文章,未经博主允许,欢迎随意转载,标好作者+原文地址就可以了!感谢欣赏!觉得好请回个贴!
万万没想到对于3D物体应付起来易如反掌的Unity3D在面对图表的绘制是如此简直无力,需要和C++或者其它语言一样需要调用到自己底层绘图接口《【Unity3D】平面绘图——GL与GUI》(点击打开链接)、《【Unity3D】Mesh》(点击打开链接),慢慢地一个个矩形直线或者三角形慢慢拼出一个图表,尤其是那些需要动态数据生成的图表,简直就是无能为力。所以要在Unity3D整个图表,提高编程效率,就想到用插件。网上盛传Unity3D的图表插件GraphMaker、Prochart是极其极其好用,但就不知道为何连份GraphMaker的中文资料都没有,而Prochart更是连个和谐的下载地址都没有,作为一个穷逼更不可能莫名其妙就扔个几十美金去研究研究。
下面将自己对GraphMaker1.3的一个星期研究分享给大家,Unity3D图表简直弄得我茶饭不思,无力吐槽!基本实现了Unity3D柱状图、折线图、饼图,而且这破插件并没有传说中这么好用!
一、GraphMaker1.3的下载、配置
首先,这破插件现在已经去到了GrpahMaker1.5版本,虽然支持Unity4.x,但不支持适配Unity4.x的最后一版NGUI3.9.7啊,所以还是等于废的,网上找不到被分享的GrpahMaker1.4,我也不可能乱和你升Unity5.x的,只能用GraphMaker1.3了。我已经给大家上传了一份:http://download.csdn.net/detail/yongh701/9839689,有爱自取。
正如上面所说,GrpahMaker1.3需要NGUI,所以先导入一个NGUI,再导入GrpahMaker1.3,NGUI不了解,或者需要NGUI3.9.7,请参看《【NGUI】Helloworld》(点击打开链接)。
导入完毕之后再双击Graph_Maker_NGUI导入,选择这个高版本的Graph_Maker_NGUI,GraphMaker1.3还支持更低版本的Unity3D和NGUI……不过现在这些版本应该已经绝迹了。
之后还不能工作,我们需要导入一个微软雅黑字体,具体见《【Unity3D】导入字体与淡入启动场景》(点击打开链接)不再赘述了。需要改改NGUI的默认字库,不然这GraphMaker1.3是不能改默认字体的,默认字体是就是NGUI的没有中文字库的字体,你作者你在美利坚就没事,我们在天朝hard模式,不再将NGUI的默认字体改成默认字体,我们的大中文显示不出来啊,亲!
怒将NGUI的默认字库scifi fonts编程微软雅黑的方法如下:
1、如图,在Asset找到scifi fonts - normal将UIFont中的Font Type改成Dynamic,之后在TTF Font换成刚刚导入的微软雅黑。
2、双击下面的材质,SciFi Atlas或者直接点Asset的材质球。进入到编辑SciFi Atlas材质的画面。然后切换微软雅黑的导入目录,我这里就是根目录Assets,将Unity3D已经解析出来的字库贴图Font Texture拖进SciFi Atlas的字库。从此NGUI的默认字体还是叫SciFi,但实质是微软雅黑。玩过NDS或者PSP汉化的人,都知道实质这就是cracked字库的关键一步。
3、新建一个NGUI的UI和Label测试测试,我们依旧是使用NGUI的默认字体SciFi Font,但Text输入的是中文,点击运行,看到中文是没有问题,还是标准的微软雅黑字体,胸前的红领巾更加鲜艳了,心里直呼祖国真好,简直呵呵了!你妹的GraphMaker,给个字体接口?爷要搞这么多事情?
将这个Label删去之后就真的可以开始GraphMarker的编程工作了!
二、GraphMaker饼图
1、和NGUI一样在预设中搜索饼图,将其拖到UI Root的旗下。你会发现什么都看不到,没办法,这插件烂,什么都是空物体GameObject然后什么都写在脚本里面,所以对于可视化设置位置很不好。之后将Scale改成XYZ都是2~8左右(实质这里是个平面图,Z调不调都行),我也不知道为何这个数字最合适,上面的矩形工具对这些用脚本生成的东西是没用的!-_-!将这空物体,利用左上角的位移工具移到适合位置,你可以边点播放运行边看实质运行的结果,调整位置。
2、之后是大家最关心的数据自动生成,创建一个空物体,挂载下面的脚本PieChartData.cs:
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- public class PieChartData : MonoBehaviour
- {
- void Start()
- {
- WMG_Pie_Graph PieGraph = GameObject.Find("PieGraph").GetComponent<WMG_Pie_Graph>();
- //设置序列名、数值(会自动求比例的)、颜色
- List<string> sliceLabels = new List<string>(new string[] { "小明", "小红", "小黄", "小白" });
- List<float> sliceValues = new List<float>(new float[] { 30f, 2f, 1.7f, 15f });
- List<Color> sliceColors = new List<Color>(new Color[] { Color.red, Color.black, Color.yellow, Color.white });
- PieGraph.sliceLabels = sliceLabels;
- PieGraph.sliceValues = sliceValues;
- PieGraph.sliceColors = sliceColors;
- PieGraph.explodeLength = 0; //饼块分离程度为0,意思为不分离
- }
- }
运行结果如下:
别看这里的脚本这么简单,这插件的说明文档没有!度娘不清楚这东西。我可是去不存在的网站youtube找到相应的视频,才找到这东西怎么整的。大家可以看到是还是用经典的GameObject.Find("XX").GetComponent<XX>();去控制,但你要知道这东西的控制类是WMG_Pie_Graph。
另外,PieGraph.sliceLabels、PieGraph.sliceValues、PieGraph.sliceColors这三个数组的长度要对应,这个应该不用多说了。
以上是主要的功能,也应该就是这些控制了,需要在饼图上加标题,建议直接自己在上面弄个中文标题算了。可以用脚本对PieGraph更多属性进行控制,对是采用这种PieGraph.XX=的形式,能取即能改。
三、GraphMaker的柱状图、折线图
1、柱状图、折线图在GraphMaker都是BarGraph在Graph Type中不同的类型,也和上面的饼图一样,都要自己设置摸黑边运行边调整位置,不然默认的太大了。
在属性栏还有Legend Type等一系列属性,用于设置数据标签。
2、下面以动态产生一个温度做例子。
这里先说明一点,千万别觉得这自带Apple和Oranges系列太烦,做出一下的行为,这会导致空指针疯狂报错的。正确的姿势是需要新建脚本用它规定的API删,所以这个插件做得不好,据说在最新的版本已经修复了这个问题,不过我是没钱买的!而且Unity5.x的离线模式,和谐补丁又有点Bug,不可能升级了。
所以你需要在空物体挂载如下的BarGraphData.cs:
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;//用到了容器类
- public class BarGraphData : MonoBehaviour
- {
- void Start()
- {
- WMG_Axis_Graph BarGraph = GameObject.Find("BarGraph").GetComponent<WMG_Axis_Graph>();
- //删除两个预设名字
- BarGraph.deleteSeries();
- BarGraph.deleteSeries();
- //y轴的最大最小值
- BarGraph.yAxisMaxValue = 40;
- BarGraph.yAxisMinValue = -20;
- BarGraph.xAxisLabelSpacingX = 0;//X轴的标签不居中
- BarGraph.xAxisNumTicks = 5;//设置横轴拥有的标签数量,这里为4+1
- List<string> xAxisLabels = new List<string>(new string[] { "春", "夏", "秋", "冬" });//设置横轴名
- BarGraph.xAxisLabels = xAxisLabels;
- WMG_Series series1 = BarGraph.addSeries();
- series1.seriesName = "广州";
- List<Vector2> pointValues1 = new List<Vector2>(new Vector2[] { new Vector2(0, 20), new Vector2(0, 30), new Vector2(0, 20), new Vector2(0, 10) });
- series1.pointValues = pointValues1;
- series1.pointColor = Color.green;//设置数组点颜色
- //设置自动将数字更新到X轴之中
- series1.UseXDistBetweenToSpace = true;
- series1.AutoUpdateXDistBetween = true;
- WMG_Series series2 = BarGraph.addSeries();
- series2.seriesName = "北京";
- List<Vector2> pointValues2 = new List<Vector2>(new Vector2[] { new Vector2(0, 5), new Vector2(0, 25), new Vector2(0, 5), new Vector2(0, -5) });
- series2.pointValues = pointValues2;
- series2.pointColor = Color.red;//设置数组点颜色
- //设置自动将数字更新到X轴之中
- series2.UseXDistBetweenToSpace = true;
- series2.AutoUpdateXDistBetween = true;
- }
- }
首次运行的时候,这破插件还没写好,会产生报错,据说在后续的版本已经修改了这个问题,但现在不管了,双击点入WMG_Series,将最后4行通通注释掉,就不会空指针了。
注释后保存,再运行,在BarGraph的Graph Type设置为Bar_side也就是柱状图的时候,如下图所示:
再在BarGraph的Graph Type设置为Line也就是折线图的时候,如下图所示:
如果你觉得不好看,再用左上角的缩放工具调整下Background或者改下BarGraph的属性栏,看看能不能弄得更好看吧。在GraphMaker1.3的BarGraph还是有点Bug的,但基本上满足了我们对Unity3D的图表需求的。我是没空再折腾了,已经足足耗费了一到二个星期在上面了,大家有空再折腾折腾。也希望未来Unity3D有更好的图表插件,别画个饼图都这么蛋疼!
真的是不明白,在网页,有《【jQuery】兼容IE6的图表插件Highcharts》(点击打开链接)和《【ExtJs】饼状图》(点击打开链接)等一系列的图表插件,来到Unity3D居然成为了一个大问题!
【GraphMaker】Unity3D图表——柱状图、折线图、饼图相关推荐
- 【JAVA - POI 合集】之 POI 操作word 图表,柱状图,折线图,雷达图,条形图 poi4.1.2
1.前言 关于poi 操作word 的吐槽: 山路崎岖, 一言难尽啊!!! 原本项目中的poi 版本是3.17的版本,但是3.17对于在word 中操作图表是有问题的.所以对项目的jar 包进行了升级 ...
- 【Axure交互教程】图表载入效果(柱状图/折线图/饼图)
作品名称:图表载入效果 作品编号:Case004 软件版本:Axure9 作品类型:交互案例 我们在设计原型时会经常使用到图表,给图表加一点载入时的动效会让图表更加生动.今天我们来简单介绍下在Axur ...
- 从后端数据库获取数据并传值到前端vue项目的echarts柱状图/折线图/饼图里
不同图表的数据获取有一定的区别 在这些区别上花了不少功夫试验,把最后成功的方法做个记录,如果有类似项目要做的话,也可看看当个参考. 后端 后端都大同小异,方法上没有区别,在这里以柱状图为例. sql: ...
- java使用poi在word中生成柱状图、折线图、饼图、柱状图+折线图组合图、动态表格、文本替换、图片替换、更新内置Excel数据、更新插入的文本框内容、合并表格单元格;
本文参考地址:https://blog.csdn.net/wangxiaoyingWXY/article/details/95377533 在参考文章的基础上,增加了扩展.感谢被参考的妹子.另外该博客 ...
- java + jfreechart + itextpdf创建折线图饼图并导出为pdf
一.添加需要的maven依赖 <!--用于生成pdf--> <dependency><groupId>com.itextpdf</groupId>< ...
- php制作曲线柱形图的框架,用GD图库生成横竖柱状图折线图的类_php
最近写的一个GD图库用以生成横竖柱状图和折线图的类库,算是一个教学例程吧 Class ImageReport{ var $X;//图片大小X轴 var $Y;//图片大小Y轴 var $R;//背影色 ...
- 柱状图折线图混合使用
<!DOCTYPE html> <html><head><meta charset="utf-8"><title>柱状图 ...
- Origin: 双Y轴 | 柱状图 | 折线图 | 垂线散点图的结合绘制
origin | 双Y轴 | 添加图层 | 柱状图 | 折线图 | 散点图 一.前言 二.数据准备 三.绘图 3.1 图层1-绘制柱状图 3.2 图层2-折线图的绘制 3.2.1 添加新图层-折线图 ...
- java开源库生成折线图_Android HelloChart开源库图表之折线图的实例代码
前面我们介绍了开源图表库MPAndroidChart,请参考: 我们今天介绍的将是一个更为优秀的图表库,比MPAndroidChart性能更好,功能更完善,UI风格更美观,坐标轴更精细. 支持缩放.滑 ...
- 【python科研绘图】双y轴并列柱状图+折线图+数据表结合,并封装图形绘制函数
双y轴并列柱状图+折线图+数据表结合 1. 论文原图 2 数据准备 3 代码实现步骤拆解 3.1 导入第三方库 3.2 数据赋值 3.3 数据绘图 4 函数封装 手动反爬虫: 原博地址 https:/ ...
最新文章
- Nature子刊:残留DNA在土壤中含量丰富并且模糊了对土壤生物多样性的估计
- go 类型 value 不支持索引_10分钟掌握PostgreSQL 5种索引的应用场景
- Opencv腐蚀操作去除激光反光光斑
- Honor7x能用鸿蒙系统吗,家庭无缝覆盖:Honor 荣耀 发布 分布式路由 和 路由2
- HTML中的camera标签,详解HTML5 使用video标签实现选择摄像头功能
- mysql断开同步并记录位置_数据库同步自动断开问题的处理
- PP视频怎么设置文件的缓存路径
- fdisk自动进行分区
- DDD理论学习系列(8)-- 应用服务领域服务
- javaweb——jsp(学习总结,javaweb必备技能)
- libjpeg-turbo 2.1.2 交叉编译
- PDF文件拆分为单独页面且通过每页的相关内容重名命
- 3A之自动白平衡(AWB)篇
- 一般家用路由器买多大的合适_家用路由器选多少M(兆)的合适【图】
- LeCo-169. 多数元素
- Mac系统下Gauge初体验
- CAD2019中文版下载AutoCAD2019安装教程
- OpenHarmony3.1适配移远EC20模组4G上网功能
- iif函数 vfp_VFP常用函数大全
- 石头机器人红灯快闪_5.1南宁上演“科幻大片”!各闹市街头惊现“机器人快闪”...