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:

[csharp] view plaincopy
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. public class PieChartData : MonoBehaviour
  5. {
  6. void Start()
  7. {
  8. WMG_Pie_Graph PieGraph = GameObject.Find("PieGraph").GetComponent<WMG_Pie_Graph>();
  9. //设置序列名、数值(会自动求比例的)、颜色
  10. List<string> sliceLabels = new List<string>(new string[] { "小明", "小红", "小黄", "小白" });
  11. List<float> sliceValues = new List<float>(new float[] { 30f, 2f, 1.7f, 15f });
  12. List<Color> sliceColors = new List<Color>(new Color[] { Color.red, Color.black, Color.yellow, Color.white });
  13. PieGraph.sliceLabels = sliceLabels;
  14. PieGraph.sliceValues = sliceValues;
  15. PieGraph.sliceColors = sliceColors;
  16. PieGraph.explodeLength = 0; //饼块分离程度为0,意思为不分离
  17. }
  18. }

运行结果如下:

别看这里的脚本这么简单,这插件的说明文档没有!度娘不清楚这东西。我可是去不存在的网站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:

[csharp] view plaincopy
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;//用到了容器类
  4. public class BarGraphData : MonoBehaviour
  5. {
  6. void Start()
  7. {
  8. WMG_Axis_Graph BarGraph = GameObject.Find("BarGraph").GetComponent<WMG_Axis_Graph>();
  9. //删除两个预设名字
  10. BarGraph.deleteSeries();
  11. BarGraph.deleteSeries();
  12. //y轴的最大最小值
  13. BarGraph.yAxisMaxValue = 40;
  14. BarGraph.yAxisMinValue = -20;
  15. BarGraph.xAxisLabelSpacingX = 0;//X轴的标签不居中
  16. BarGraph.xAxisNumTicks = 5;//设置横轴拥有的标签数量,这里为4+1
  17. List<string> xAxisLabels = new List<string>(new string[] { "春", "夏", "秋", "冬" });//设置横轴名
  18. BarGraph.xAxisLabels = xAxisLabels;
  19. WMG_Series series1 = BarGraph.addSeries();
  20. series1.seriesName = "广州";
  21. List<Vector2> pointValues1 = new List<Vector2>(new Vector2[] { new Vector2(0, 20), new Vector2(0, 30), new Vector2(0, 20), new Vector2(0, 10) });
  22. series1.pointValues = pointValues1;
  23. series1.pointColor = Color.green;//设置数组点颜色
  24. //设置自动将数字更新到X轴之中
  25. series1.UseXDistBetweenToSpace = true;
  26. series1.AutoUpdateXDistBetween = true;
  27. WMG_Series series2 = BarGraph.addSeries();
  28. series2.seriesName = "北京";
  29. List<Vector2> pointValues2 = new List<Vector2>(new Vector2[] { new Vector2(0, 5), new Vector2(0, 25), new Vector2(0, 5), new Vector2(0, -5) });
  30. series2.pointValues = pointValues2;
  31. series2.pointColor = Color.red;//设置数组点颜色
  32. //设置自动将数字更新到X轴之中
  33. series2.UseXDistBetweenToSpace = true;
  34. series2.AutoUpdateXDistBetween = true;
  35. }
  36. }

首次运行的时候,这破插件还没写好,会产生报错,据说在后续的版本已经修改了这个问题,但现在不管了,双击点入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图表——柱状图、折线图、饼图相关推荐

  1. 【JAVA - POI 合集】之 POI 操作word 图表,柱状图,折线图,雷达图,条形图 poi4.1.2

    1.前言 关于poi 操作word 的吐槽: 山路崎岖, 一言难尽啊!!! 原本项目中的poi 版本是3.17的版本,但是3.17对于在word 中操作图表是有问题的.所以对项目的jar 包进行了升级 ...

  2. 【Axure交互教程】图表载入效果(柱状图/折线图/饼图)

    作品名称:图表载入效果 作品编号:Case004 软件版本:Axure9 作品类型:交互案例 我们在设计原型时会经常使用到图表,给图表加一点载入时的动效会让图表更加生动.今天我们来简单介绍下在Axur ...

  3. 从后端数据库获取数据并传值到前端vue项目的echarts柱状图/折线图/饼图里

    不同图表的数据获取有一定的区别 在这些区别上花了不少功夫试验,把最后成功的方法做个记录,如果有类似项目要做的话,也可看看当个参考. 后端 后端都大同小异,方法上没有区别,在这里以柱状图为例. sql: ...

  4. java使用poi在word中生成柱状图、折线图、饼图、柱状图+折线图组合图、动态表格、文本替换、图片替换、更新内置Excel数据、更新插入的文本框内容、合并表格单元格;

    本文参考地址:https://blog.csdn.net/wangxiaoyingWXY/article/details/95377533 在参考文章的基础上,增加了扩展.感谢被参考的妹子.另外该博客 ...

  5. java + jfreechart + itextpdf创建折线图饼图并导出为pdf

    一.添加需要的maven依赖 <!--用于生成pdf--> <dependency><groupId>com.itextpdf</groupId>< ...

  6. php制作曲线柱形图的框架,用GD图库生成横竖柱状图折线图的类_php

    最近写的一个GD图库用以生成横竖柱状图和折线图的类库,算是一个教学例程吧 Class ImageReport{ var $X;//图片大小X轴 var $Y;//图片大小Y轴 var $R;//背影色 ...

  7. 柱状图折线图混合使用

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>柱状图 ...

  8. Origin: 双Y轴 | 柱状图 | 折线图 | 垂线散点图的结合绘制

    origin | 双Y轴 | 添加图层 | 柱状图 | 折线图 | 散点图 一.前言 二.数据准备 三.绘图 3.1 图层1-绘制柱状图 3.2 图层2-折线图的绘制 3.2.1 添加新图层-折线图 ...

  9. java开源库生成折线图_Android HelloChart开源库图表之折线图的实例代码

    前面我们介绍了开源图表库MPAndroidChart,请参考: 我们今天介绍的将是一个更为优秀的图表库,比MPAndroidChart性能更好,功能更完善,UI风格更美观,坐标轴更精细. 支持缩放.滑 ...

  10. 【python科研绘图】双y轴并列柱状图+折线图+数据表结合,并封装图形绘制函数

    双y轴并列柱状图+折线图+数据表结合 1. 论文原图 2 数据准备 3 代码实现步骤拆解 3.1 导入第三方库 3.2 数据赋值 3.3 数据绘图 4 函数封装 手动反爬虫: 原博地址 https:/ ...

最新文章

  1. Nature子刊:残留DNA在土壤中含量丰富并且模糊了对土壤生物多样性的估计
  2. go 类型 value 不支持索引_10分钟掌握PostgreSQL 5种索引的应用场景
  3. Opencv腐蚀操作去除激光反光光斑
  4. Honor7x能用鸿蒙系统吗,家庭无缝覆盖:Honor 荣耀 发布 分布式路由 和 路由2
  5. HTML中的camera标签,详解HTML5 使用video标签实现选择摄像头功能
  6. mysql断开同步并记录位置_数据库同步自动断开问题的处理
  7. PP视频怎么设置文件的缓存路径
  8. fdisk自动进行分区
  9. DDD理论学习系列(8)-- 应用服务领域服务
  10. javaweb——jsp(学习总结,javaweb必备技能)
  11. libjpeg-turbo 2.1.2 交叉编译
  12. PDF文件拆分为单独页面且通过每页的相关内容重名命
  13. 3A之自动白平衡(AWB)篇
  14. 一般家用路由器买多大的合适_家用路由器选多少M(兆)的合适【图】
  15. LeCo-169. 多数元素
  16. Mac系统下Gauge初体验
  17. CAD2019中文版下载AutoCAD2019安装教程
  18. OpenHarmony3.1适配移远EC20模组4G上网功能
  19. iif函数 vfp_VFP常用函数大全
  20. 石头机器人红灯快闪_5.1南宁上演“科幻大片”!各闹市街头惊现“机器人快闪”...

热门文章

  1. Excel折线图设置坐标轴起点不为0
  2. springboot致远汽车租赁系统
  3. Linux 目录文件显示绿色高亮的问题
  4. Android平台上集成乐橙SDK
  5. STM32F103学习记录-----GPIO篇
  6. 第三方(网页/小程序)唤醒微信app小结
  7. 主流电商平台API接口大全
  8. Young氏双缝干涉实验近似公式推导的传统谬误
  9. Linux开机启动管理---systemd使用
  10. Karabiner常用的自带快捷键