返回首页
XCharts问答
XChartsAPI接口
XCharts配置项手册
你可以通过以下几种方式获取 XCharts
。
如果你只是想运行 Demo
查看效果,可以在 Github上的 Code下载整个项目或去 release下载稳定版本,将源码工程解压后用unity
打开即可。如果访问Github不稳定的话,可以从国内镜像下载。
如果你要将 XCharts
加入你的项目中,可以在Github上下载最新的 release稳定版本,这里一般会包含XCharts
和XChartsDemo
两个unitypackage
,将 XCharts
通过 Unity
导入到你的项目中,XChartsDemo
是示例Demo
,可视情况导入。或下载 Source Code
解压后将内部的 XCharts
文件夹拷贝到你项目的 Assets
目录下。
如果你是Unity 2018.3
及以上版本,可通过Package Manager
来安装XCharts
包,通过此方式导入的包只包含XCharts
核心部分,不包含XChartsDemo
示例Demo
部分。具体操作步骤如下:
Packages
目录下的manifest.json
文件,在dependencies
下加入: "com.monitor1394.xcharts": "https://github.com/monitor1394/unity-ugui-XCharts.git#2.0-upm",
Unity
,可能会花3到5分钟进行下载和编译,成功后就可以开始使用XCharts
了。XCharts
,删除掉1步骤所加的内容即可。XCharts
,删除manifest.json
文件的lock
下的com.monitor1394.xcharts
相关内容即会重新下载编译。在 Component -> XCharts -> Check For Update
可以检测是否有新版本可更新。在Hierarchy
试图下右键或菜单栏GameObject
下拉:XCharts->LineChart
:
即可快速创建一个简单的折线图出来:
在 Inspector
视图下可以调整各个组件的参数,Game
视图会实时反馈调整的效果。各个组件的详细参数说明可查阅XCharts配置项手册。
首先要理解:XCharts
是配置参数驱动。想要什么效果,你只需要去调整对应组件下的配置参数就可以,不需要去改Hierarchy
试图下的节点,因为那些节点是由XCharts
内部根据配置参数生成的。你改了也会变还原。
快速定位你想要改的效果对应的组件。这就需要对组件有一定的了解。比如我们想要让X轴的轴线末端显示箭头,第一步X轴定位到XAxis0
,第二步轴线定位到AxisLine
,然后我们再去看AxisLine
有没有这样的参数可以实现这个效果。
XCharts
提供从全局Theme
、系列Serie
、单个数据项SerieData
全方位的参数配置。优先级从大到小为:SerieData
->Serie
->Theme
。以ItemStyle
的颜色例,如果SerieData
的ItemStyle
配置有颜色值,则优先用这个颜色值。判断是否配置有颜色值就是Color.clear
(颜色的RGBA都是0)。
给gameObject
挂上LineChart
脚本,需要调用SetSize()
接口设置图表尺寸,或者直接操作chart.rectTransfrom
:
var chart = gameObject.GetComponent<LineChart>();
if (chart == null)
{
chart = gameObject.AddComponent<LineChart>();
chart.SetSize(580, 300);//代码动态添加图表需要设置尺寸,或直接操作chart.rectTransform
}
设置标题:
chart.title.show = true;
chart.title.text = "Line Simple";
设置提示框和图例是否显示:
chart.tooltip.show = true;
chart.legend.show = false;
设置是否使用双坐标轴和坐标轴类型:
chart.xAxes[0].show = true;
chart.xAxes[1].show = false;
chart.yAxes[0].show = true;
chart.yAxes[1].show = false;
chart.xAxes[0].type = Axis.AxisType.Category;
chart.yAxes[0].type = Axis.AxisType.Value;
设置坐标轴分割线:
chart.xAxes[0].splitNumber = 10;
chart.xAxes[0].boundaryGap = true;
清空数据,添加Line
类型的Serie
用于接收数据:
chart.RemoveData();
chart.AddSerie(SerieType.Line);
添加10个数据:
for (int i = 0; i < 10; i++)
{
chart.AddXAxisData("x" + i);
chart.AddData(0, Random.Range(10, 20));
}
如果一个Chart里面有多个系列时,则Axis的data只需要加一次,不要多个循环加重复了。记住:Axis的数据个数要和Serie的数据个数一致。
完整代码请查阅Examples
:Example13_LineSimple.cs
你还可以用代码控制更多的参数,Examples
下还有更多的其他例子,凡是Inspector
上看到的可配置的参数,都可以通过代码来设置。XCharts配置项手册里面的所有参数都是可以通过代码控制的。
另外,除非定制,建议调用XChartsAPI接口 里面的接口,这些接口内部会做一些关联处理,比如刷新图表等。如果自己调用了内部组件的接口,需要自己处理刷新等其他问题。
XCharts支持TextMeshPro,但默认是不开启的,需要自己手动切换。可通过一下两种方式开启和关闭:
开启后需要设置好TextMeshPro要用的全局字体,也可以在主题Theme里单独设置:
建议在项目初就规划好是否使用TextMeshPro,在有很多图表的情况下再切换,可能导致某些图表无法正常初始化,这时可能需要每个图表单独的使用Remove All Chart Object
来清理让图表重新初始化。
Inspector
上看到的所有参数都可以用代码来修改,关键是要定位好你要改的参数是在组件上、还是serie上、还是在具体的数据项上改。
chart.title.text = "LineChart - 折线图";
chart.title.subText = "普通折线图";
chart.yAxis0.minMaxType = Axis.AxisMinMaxType.Custom;
chart.yAxis0.min = 0;
chart.yAxis0.max = 100;
var serie = chart.AddSerie(SerieType.Gauge, "速度");
serie.min = 0;
serie.max = 220;
serie.startAngle = -125;
serie.endAngle = 125;
serie.center[0] = 0.5f;
serie.center[1] = 0.5f;
serie.radius[0] = 80;
serie.splitNumber = 5;
serie.animation.dataChangeEnable = true;
serie.roundCap = true;
var serieData = chart.AddData(0, Random.Range(10, 20));
serieData.enableItemStyle = true;
serieData.itemStyle.color = Color.blue;
}