Compare commits

...

155 Commits

Author SHA1 Message Date
monitor1394
759b3f22f9 发布1.0.2版本 2019-11-01 04:23:10 +08:00
monitor1394
ec9277c0d8 发布1.0.2版本 2019-11-01 04:14:16 +08:00
monitor1394
a4d91b3c4e 发布1.0.2版本 2019-10-31 09:49:08 +08:00
monitor1394
00996b92d0 优化DestroyAllChildren接口 2019-10-31 09:46:18 +08:00
monitor1394
8ba251d5be 修复拖出制作预设时异常的问题 2019-10-31 09:40:12 +08:00
Jacob Rapoport
773cfe6c7d fix destroying a gameobject inside a prefab 2019-10-31 09:06:53 +08:00
Jacob Rapoport
e01c55c3ca add themeInfo property 2019-10-31 08:56:47 +08:00
Jacob Rapoport
e58fb2b31f add UpdateThemeInfo API 2019-10-31 08:56:24 +08:00
monitor1394
9e6632897b 发布1.0.1版本 2019-10-26 05:29:10 +08:00
monitor1394
13222ddbc6 增加Axis类目轴数据为空时的默认显示支持。 2019-10-26 05:26:55 +08:00
monitor1394
e13049774a 修复版本检查非运行时异常的问题 2019-10-26 05:02:57 +08:00
monitor1394
39278499a4 增加科学计数法显示数值的支持 2019-10-26 05:02:32 +08:00
monitor1394
912e0b55eb 增加Axis数值轴的最大最小值可设置为小数的支持,优化极小数图表的表现效果。 2019-10-26 05:00:26 +08:00
monitor1394
55a3533230 发布1.0.0版本 2019-10-25 08:48:32 +08:00
monitor1394
88428b8faa 发布1.0.0版本 2019-10-24 19:24:55 +08:00
monitor1394
7a351a7e7d 发布1.0.0版本 2019-10-24 12:51:37 +08:00
monitor1394
89635a442f 发布1.0.0版本 2019-10-24 09:26:31 +08:00
monitor1394
656407723a 发布1.0.0版本 2019-10-24 08:45:02 +08:00
monitor1394
fcaab01e22 发布1.0.0版本 2019-10-23 19:13:19 +08:00
monitor1394
78ebc47359 发布1.0.0版本 2019-10-23 18:59:34 +08:00
monitor1394
ed76f2b652 发布1.0.0版本 2019-10-23 07:37:02 +08:00
monitor1394
8792f7b458 发布1.0.0版本 2019-10-23 06:50:10 +08:00
monitor1394
567dc49830 发布1.0.0版本 2019-10-22 20:57:14 +08:00
monitor1394
b8440c9eae 发布1.0.0版本 2019-10-22 19:18:02 +08:00
monitor1394
fe225796a7 发布1.0.0版本 2019-10-22 18:42:30 +08:00
monitor1394
c7c90f857b 发布1.0.0版本 2019-10-22 18:34:40 +08:00
monitor1394
1ff54a187d 发布1.0.0版本 2019-10-22 18:20:23 +08:00
monitor1394
319a205b07 发布1.0.0版本 2019-10-22 13:02:37 +08:00
monitor1394
57dd2d704f 整理代码结构,支持Package Manager添加 2019-10-22 04:09:04 +08:00
monitor1394
fcae6d3bce 升级Unity到2018.3.14f1 2019-10-20 21:30:13 +08:00
monitor1394
c5f9d59a5f 删除Prefabs 2019-10-20 21:28:36 +08:00
monitor1394
8966b55ab7 更新文档 2019-10-20 21:10:59 +08:00
monitor1394
652c73e453 修复多个饼图绘制异常的问题 2019-10-20 20:40:59 +08:00
monitor1394
f139d4df1f 增加Demo首页BarChart的代码动态控制效果 2019-10-20 18:57:28 +08:00
monitor1394
8437590b00 优化大数据Label初始化问题 2019-10-18 08:43:38 +08:00
monitor1394
c1ec8be133 增加Serie的barType参数,可配置斑马柱状图 2019-10-18 07:41:23 +08:00
monitor1394
7c7f21fd27 增加Serie的barPercentStack参数,可配置百分比堆叠柱状图 2019-10-18 06:48:24 +08:00
monitor1394
8465f0cb06 增加Demo首页LineChart的代码动态控制效果 2019-10-17 09:35:49 +08:00
monitor1394
b44f3042f8 整理接口,重命名coordinateWid和coordianteHig 2019-10-17 06:43:12 +08:00
monitor1394
b043a87d3a 移除Pie组件,相关参数放到Settings中配置 2019-10-16 19:15:55 +08:00
monitor1394
f111505110 修复饼图当数据名称默认为空时颜色显示异常的问题 2019-10-16 19:05:24 +08:00
monitor1394
a047a89447 更新文档 2019-10-16 18:46:54 +08:00
monitor1394
8c74e8f3a5 增加Demo首页,展示代码控制效果 2019-10-16 18:46:31 +08:00
monitor1394
b7a59247f9 增加AreaStyle对虚线、点线、点划线的支持 2019-10-16 13:02:42 +08:00
monitor1394
a2edc9acdb 整理接口 2019-10-16 13:01:43 +08:00
monitor1394
f29b52f544 接口优化 2019-10-16 06:34:26 +08:00
monitor1394
466585d8ef 修复一些小问题 2019-10-15 09:50:51 +08:00
monitor1394
26e28f8b80 增加RadarChart、ScatterChart和HeatmapChart的起始动画效果 2019-10-14 19:22:30 +08:00
monitor1394
af6a65f4fb 修复PieChart第一次添加时颜色异常的问题 2019-10-14 18:53:42 +08:00
monitor1394
948a0f1a02 修复Label显示异常的问题 2019-10-14 18:23:28 +08:00
monitor1394
90d250eb77 整理代码 2019-10-14 18:16:45 +08:00
monitor1394
4aba7e49c8 整理组件结构 2019-10-14 18:13:08 +08:00
monitor1394
616df1c2f5 调整代码结构 2019-10-14 12:41:12 +08:00
monitor1394
6f12757fa2 更新demo 2019-10-14 09:49:38 +08:00
monitor1394
d6ab1cc88b 增加SerieData的radius自定义数据项的半径 2019-10-14 09:46:27 +08:00
monitor1394
99a737a78c 增加Heatmap热力图 2019-10-14 09:26:19 +08:00
monitor1394
6a36830115 增加HeatmapChart热力图 2019-10-14 07:45:56 +08:00
monitor1394
36b3a31733 fixed bug 2019-10-13 17:58:31 +08:00
monitor1394
bbab8cb30d 修复Icon初始化异常的问题 2019-10-13 16:03:47 +08:00
monitor1394
e2f2ea76fb 修复柱形图渐变异常的问题 2019-10-11 21:28:46 +08:00
monitor1394
afa44c4257 增加settings组件访问接口 2019-10-11 12:41:12 +08:00
monitor1394
2e8e55a85f fixed bug 2019-10-11 12:32:42 +08:00
monitor1394
1c465f244c 增加Settings全局参数配置组件,开放更多参数可配置 2019-10-10 09:01:16 +08:00
monitor1394
f160e0daa6 fixed bug 2019-10-09 19:20:03 +08:00
monitor1394
5d0c05e743 更新文档 2019-10-09 19:19:53 +08:00
monitor1394
a9e64c88ea 增加AreaStyle的高亮相关参数配置鼠标悬浮时高亮之前区域 2019-10-09 18:54:58 +08:00
monitor1394
dd64ab74f1 更新文档 2019-10-09 10:03:23 +08:00
monitor1394
3f9ec0fc19 更新文档 2019-10-09 09:59:44 +08:00
monitor1394
bcfdabb0ba fixed bug 2019-10-09 09:13:01 +08:00
monitor1394
9aafbe5d22 优化DataZoom组件,增加双指缩放 2019-10-09 02:37:05 +08:00
monitor1394
fcd63fc525 ignore ios 2019-10-09 02:34:07 +08:00
monitor1394
4a2a395922 增加SerieLabel的LineType给饼图配置不同类型的视觉引导线 2019-10-05 18:23:06 +08:00
monitor1394
0a39463bac 优化堆叠平滑曲线图的绘制 2019-10-03 11:07:26 +08:00
monitor1394
c148c8ccd4 修复Legend控制的Serie颜色有时候异常的问题 2019-10-03 09:42:03 +08:00
monitor1394
450e091095 增加ScatterChart同时对Scatter和Line的支持,实现折线图和散点图的组合图 2019-10-02 08:15:02 +08:00
monitor1394
ce91d4045f 重构代码,废弃Series.series接口,用Series.list代替 2019-10-01 13:52:02 +08:00
monitor1394
9e6e01c718 增加customDrawCallback自定义绘制回调 2019-10-01 13:31:34 +08:00
monitor1394
e180a84c64 增加SmoothDash平滑虚线的支持 2019-10-01 09:36:24 +08:00
monitor1394
3e51467346 fixed bug 2019-09-30 21:49:26 +08:00
monitor1394
f5b8468b62 修复坐标轴刻度刷新会闪屏的问题 2019-09-30 19:05:09 +08:00
monitor1394
4266b07a5f 增加Serie采样类型sampleType的相关配置 2019-09-30 12:43:26 +08:00
monitor1394
5bf8ecc001 增加SerieSymbol关于显示间隔的相关配置 2019-09-29 19:13:08 +08:00
monitor1394
2b877973aa 修复设置采样距离后绘制最后一个数据异常的问题 2019-09-29 18:21:27 +08:00
monitor1394
ba346f994a fixed bug 2019-09-29 12:40:19 +08:00
monitor1394
ffe096a612 fixed bug 2019-09-29 09:19:26 +08:00
monitor1394
fae92e1a5e 更新文档 2019-09-29 09:16:49 +08:00
monitor1394
ddf73c7f21 重构接口 2019-09-29 09:16:15 +08:00
monitor1394
35cababb2c 重构sampleDist 2019-09-29 08:43:49 +08:00
monitor1394
3d5ee319e5 重构minShowDataNumber、maxShowDataNumber、maxCacheDataNumber到Serie的minShow、maxShow、maxCache 2019-09-29 07:37:53 +08:00
monitor1394
0f80a75fe7 重构sampleDist到Serie的lineSampleDist 2019-09-29 06:58:26 +08:00
monitor1394
c282d15889 增加LineChart和BarChart同时对Line、Bar类型Serie的支持,实现折线图和柱状图组合 2019-09-28 16:35:55 +08:00
monitor1394
22484eb8df 增加Axis的splitNumber设置为0时表示绘制所有类目数据 2019-09-27 19:17:11 +08:00
monitor1394
516d35a8c8 重命名Base为Settings 2019-09-27 19:01:31 +08:00
monitor1394
09f7fe4fa6 增加采样距离说明文档 2019-09-27 18:59:16 +08:00
monitor1394
8d2183a333 增加SampleDist采样距离的配置,对过密的曲线开启采样,优化绘制效率 2019-09-27 18:58:42 +08:00
monitor1394
40ba70f6c0 Merge branch 'master' of https://github.com/monitor1394/unity-ugui-XCharts 2019-09-27 18:18:12 +08:00
monitor1394
62d767ae20 优化大批量添加数据时卡顿严重的问题 2019-09-27 18:18:07 +08:00
monitor1394
a52fbd023e Update LineChart.cs
修复当只有两个数据时区域图绘制异常的问题
2019-09-27 11:06:17 +08:00
monitor1394
a59723ecef 更新文档 2019-09-27 09:31:42 +08:00
monitor1394
0a60f76c87 增加XCharts问答、XChartsAPI接口、XCharts配置项手册等文档 2019-09-27 09:27:57 +08:00
monitor1394
9cfcdd5d10 增加AnimationReset()重置初始化动画接口 2019-09-26 19:10:56 +08:00
monitor1394
bc4fd066ee 优化LineChart的密集数据的曲线效果 2019-09-26 19:03:26 +08:00
monitor1394
cce0724842 优化SerieData的自定义图标不与SerieLabel关联,可单独控制是否显示 2019-09-25 09:44:53 +08:00
monitor1394
d8148ef9ef 增加SerieData的自定义图标相关配置支持 2019-09-24 18:47:43 +08:00
monitor1394
48c867b1ef 增加Formatter配置Axis的AxisLabel的格式化输出 2019-09-23 19:09:56 +08:00
monitor1394
32967df5c9 修复运行时数据变化曲线和标志绘制异常的问题 2019-09-23 18:47:45 +08:00
monitor1394
ec3f9e40bf 增加Tooltip的FontSize、FontStyle配置字体大小和样式 2019-09-23 09:50:57 +08:00
monitor1394
7881f092e6 优化Formatter显示 2019-09-23 09:41:10 +08:00
monitor1394
4adda8da9d 增加Formatter配置Tooltip的格式化输出 2019-09-23 09:23:51 +08:00
monitor1394
0b9abefda9 修复折线图在Axis最大最小值差为0时坐标计算异常的问题 2019-09-20 12:54:36 +08:00
monitor1394
7757e396cb 增加Formatter配置SerieLabel、Legend的格式化输出 2019-09-20 12:38:45 +08:00
monitor1394
1a3a1d2b03 修复Tooltip在鼠标移出图表外可能绘制异常的问题 2019-09-20 08:55:52 +08:00
monitor1394
5532640c5d 增加LineArrow配置带箭头曲线 2019-09-19 19:26:05 +08:00
monitor1394
afe1663926 修复横向柱状图绘制异常的问题 2019-09-19 12:38:20 +08:00
monitor1394
572d7b39f1 增加Tooltip的FixedWidth、FixedHeight、MinWidth、MinHeight设置支持 2019-09-19 09:06:04 +08:00
monitor1394
73bacfaceb 增加单条堆叠柱状图 2019-09-18 19:10:43 +08:00
monitor1394
71b7691e90 增加虚线Dash、点线Dot、点划线DashDot、双点划线DashDotDot等类型的折线图支持 2019-09-18 18:23:37 +08:00
monitor1394
fd4ef2c879 增加AnimationEnabel()启用或取消起始动画接口 2019-09-17 18:39:01 +08:00
monitor1394
342ce41d58 增加Axis的Interval强制设置坐标轴分割间隔 2019-09-17 18:30:45 +08:00
monitor1394
8748206a5e Merge pull request #12 from sericaer/master
删除无用的m_Legend.AddData(serieName), 修改defaultLeft错误
2019-09-17 18:19:02 +08:00
sericaer
06a23d0940 修改defaultLeft错误 2019-09-17 17:05:57 +08:00
sericaer
cf0648b1f6 删除无用的m_Legend.AddData(serieName) 2019-09-17 17:04:27 +08:00
monitor1394
e4d3ac82b6 Merge pull request #11 from sericaer/master
解决PieChart的Legend中多了serie的问题
2019-09-17 13:45:37 +08:00
sericaer
bdc1a43710 解决PieChart的Legend中多了serie的问题 2019-09-17 13:37:48 +08:00
monitor1394
5f9028b33e 修复LineChart有数据为0时区域图绘制可能异常的问题 2019-09-16 19:18:36 +08:00
monitor1394
dbac61384f 去掉Serie中的旧版本数据兼容,不再支持xData和yData 2019-09-16 18:17:49 +08:00
monitor1394
29306f3398 修复折线图当值为0时区域图绘制异常的问题 2019-09-12 18:27:52 +08:00
monitor1394
25880c8db7 增加Animation在重新初始化数据时自启动功能 2019-09-06 09:46:13 +08:00
monitor1394
09402a163c 增加SerieLabel的Border边框相关配置支持 2019-09-06 09:11:46 +08:00
monitor1394
4afb670f04 增加忽略文件 2019-09-05 09:22:51 +08:00
monitor1394
68704aab2e 增加PieChart的Animation初始化动画配置支持 2019-09-05 09:21:37 +08:00
monitor1394
8538ef3faf 增加初始化动画 2019-09-03 09:49:34 +08:00
monitor1394
adea68df65 增加BarChart的Animation初始化动画配置支持 2019-09-03 09:49:21 +08:00
monitor1394
869087aa0e 修复笛卡尔坐标系开启动画时绘制异常的问题 2019-09-02 09:46:44 +08:00
monitor1394
a08c0c535c 增加LineChart的Animation初始化动画配置支持 2019-09-02 08:43:52 +08:00
monitor1394
46399b5bd7 增加AxisName的Offset偏移配置支持 2019-08-22 19:17:00 +08:00
monitor1394
c9c43c2a9e 增加AxisLine的Width配置支持 2019-08-22 19:16:14 +08:00
monitor1394
d145fc716e 更新日志 2019-08-20 18:53:19 +08:00
monitor1394
f19dcbb017 增加BarChart的Label配置支持 2019-08-20 18:52:15 +08:00
monitor1394
938aca4699 增加SerieLabel的背景宽高、文字边距、文字旋转的配置 2019-08-20 09:40:19 +08:00
monitor1394
0acf03a2ed 增加BarChart的Label配置支持 2019-08-20 08:49:39 +08:00
monitor1394
2c01a8d130 增加LineChart的Label配置 2019-08-16 00:13:01 +08:00
monitor1394
2dfabb998e 重构LineChart和BarChart,移除Line和Bar组件,参数统一放到Serie中配置。 2019-08-15 21:44:30 +08:00
monitor1394
614d340835 修复PieChart的Label无法自动更新的问题 2019-08-14 08:52:28 +08:00
monitor1394
8ea961d2ca 修复PieChart绘制label报错的问题 2019-08-13 10:32:52 +08:00
monitor1394
f881a0cedd 修复UpdateData接口无法更新数据的问题 2019-08-13 10:20:15 +08:00
monitor1394
96e2255960 增加SerieSymbol的Color、Opacity配置 2019-08-07 23:33:27 +08:00
monitor1394
1ad3bc8c9f 发布v0.8.2版本 2019-08-07 09:05:30 +08:00
monitor1394
0743882076 修复区域平滑折线图显示异常的问题 2019-08-07 07:59:00 +08:00
monitor1394
333620d87f 性能优化 2019-08-06 18:21:16 +08:00
monitor1394
b7021cb072 修复serie系列数超过调色盘颜色数时获取的颜色异常的问题 2019-08-06 18:19:38 +08:00
monitor1394
64614cffb0 修复当Axis的minMaxType为Custom时max设置为100不生效的问题 2019-08-06 18:18:15 +08:00
monitor1394
ba925a809d 发布v0.8.1版本 2019-08-04 23:41:33 +08:00
monitor1394
300ed8ca15 整理显示10000数据的demo 2019-08-04 23:39:50 +08:00
monitor1394
1412d8c365 修复无法从Inspector中修改数据的问题 2019-08-04 23:01:34 +08:00
340 changed files with 492816 additions and 310018 deletions

7
.gitignore vendored
View File

@@ -1,13 +1,20 @@
/.vs
/.vscode
.vs
/XCharts-ios
/Library
/Temp
/Logs
/UnityPackageManager
/Assets/Res
/Assets/Res.meta
/Assets/Package
/Assets/Package.meta
/Assets/XCharts/Demo/demo_test.unity
/Assets/XCharts/Demo/demo_test.unity.meta
/Assets/XCharts/Demo/empty.unity
/Assets/XCharts/Demo/empty.unity.meta
*.sln
*.csproj

121
Assets/XCharts/CHANGELOG.md Normal file
View File

@@ -0,0 +1,121 @@
# 更新日志
* (2019.10.31) 修复`prefab`预设制作报错的问题
* (2019.10.31) 增加访问主题组件API`BaseChart.themeInfo`
* (2019.10.26) 发布`v1.0.1`版本
* (2019.10.26) 修复版本检查功能在非运行时异常的问题
* (2019.10.26) 增加科学计数法显示数值的支持(查阅`forceENotation`参数)
* (2019.10.26) 增加`Axis`类目轴数据为空时的默认显示支持
* (2019.10.26) 增加`Axis`数值轴的最大最小值可设置为小数的支持,优化极小数图表的表现效果
* (2019.10.25) 发布`v1.0.0`版本
* (2019.10.23) 增加版本检测功能:`Component -> XCharts -> Check For Update`
* (2019.10.22) 增加`Package Manager`安装的支持
* (2019.10.20) 增加`Demo`首页`BarChart`的代码动态控制效果
* (2019.10.18) 增加`Serie``barType`参数,可配置`斑马柱状图`
* (2019.10.18) 增加`Serie``barPercentStack`参数,可配置`百分比堆叠柱状图`
* (2019.10.16) 增加`Demo`首页`LineChart`的代码动态控制效果
* (2019.10.15) 移除`Pie`组件,相关参数放到`Settings`中配置
* (2019.10.15) 增加`Demo`首页,展示代码动态控制效果
* (2019.10.14) 增加`RadarChart``ScatterChart``HeatmapChart`的起始动画效果
* (2019.10.14) 增加`SerieData``radius`自定义数据项的半径
* (2019.10.14) 增加`HeatmapChart`热力图
* (2019.10.14) 增加`VisualMap`视觉映射组件
* (2019.10.14) 增加`ItemStyle`数据项样式组件
* (2019.10.14) 增加`Emphasis`高亮样式组件
* (2019.10.10) 增加`Settings`全局参数配置组件,开放更多参数可配置
* (2019.10.09) 增加`AreaStyle`的高亮相关参数配置鼠标悬浮时高亮之前区域
* (2019.10.09) 优化`DataZoom`组件,增加双指缩放
* (2019.10.05) 增加`SerieLabel``LineType`给饼图配置不同类型的视觉引导线
* (2019.10.02) 增加`ScatterChart`同时对`Scatter``Line`的支持,实现折线图和散点图的组合图
* (2019.10.01) 重构代码,废弃`Series.series`接口,用`Series.list`代替
* (2019.10.01) 增加`customDrawCallback`自定义绘制回调
* (2019.10.01) 增加`SmoothDash`平滑虚线的支持
* (2019.09.30) 增加`Serie`采样类型`sampleType`的相关配置
* (2019.09.29) 增加`SerieSymbol`关于显示间隔的相关配置
* (2019.09.29) 重构代码:
* `BaseChart``sampleDist`删除,`Serie`增加`lineSampleDist`
* `BaseChart``minShowDataNumber`删除,`Serie`增加`minShow`
* `BaseChart``maxShowDataNumber`删除,`Serie`增加`maxShow`
* `BaseChart``maxCacheDataNumber`删除,`Serie`增加`maxCache`
* `BaseChart``AddSerie()`接口参数调整
* `BaseChart``UpdateData()`接口参数调整
* `Axis`增加`maxCache`
* (2019.09.28) 增加`LineChart``BarChart`同时对`Line``Bar`类型`Serie`的支持,实现折线图和柱状图的组合图
* (2019.09.27) 增加`Axis``splitNumber`设置为`0`时表示绘制所有类目数据
* (2019.09.27) 增加`SampleDist`采样距离的配置,对过密的曲线开启采样,优化绘制效率
* (2019.09.27) 增加`XCharts问答``XChartsAPI接口``XCharts配置项手册`等文档
* (2019.09.26) 增加`AnimationReset()`重置初始化动画接口
* (2019.09.26) 优化`LineChart`的密集数据的曲线效果
* (2019.09.25) 优化`SerieData`的自定义图标不与`SerieLabel`关联,可单独控制是否显示
* (2019.09.24) 增加`SerieData`的自定义图标相关配置支持
* (2019.09.23) 增加`Formatter`配置`Axis``AxisLabel`的格式化输出
* (2019.09.23) 增加`Tooltip``FontSize``FontStyle`配置字体大小和样式
* (2019.09.23) 增加`Formatter`配置`SerieLabel``Legend``Tooltip`的格式化输出
* (2019.09.19) 增加`LineArrow`配置带箭头曲线
* (2019.09.19) 增加`Tooltip``FixedWidth``FixedHeight``MinWidth``MinHeight`设置支持
* (2019.09.18) 增加单条堆叠柱状图
* (2019.09.18) 增加虚线`Dash`、点线`Dot`、点划线`DashDot`、双点划线`DashDotDot`等类型的折线图支持
* (2019.09.17) 增加`AnimationEnabel()`启用或取消起始动画接口
* (2019.09.17) 增加`Axis``Interval`强制设置坐标轴分割间隔
* (2019.09.16) 去掉`Serie`中的旧版本数据兼容,不再支持`xData``yData`
* (2019.09.06) 增加`Animation`在重新初始化数据时自启动功能
* (2019.09.06) 增加`SerieLabel``Border`边框相关配置支持
* (2019.09.05) 增加`PieChart``Animation`初始化动画配置支持
* (2019.09.03) 增加`BarChart``Animation`初始化动画配置支持
* (2019.09.02) 增加`LineChart``Animation`初始化动画配置支持
* (2019.08.22) 增加`AxisName``Offset`偏移配置支持
* (2019.08.22) 增加`AxisLine``Width`配置支持
* (2019.08.20) 增加`SerieLabel`的背景宽高、文字边距、文字旋转的配置
* (2019.08.20) 增加`BarChart``Label`配置支持
* (2019.08.15) 增加`LineChart``Label`配置
* (2019.08.15) 重构`BarChart`,移除`Bar`组件,相关参数统一放到`Serie`中配置
* (2019.08.15) 重构`LineChart`,移除`Line`组件,相关参数统一放到`Serie`中配置
* (2019.08.15) 发布`v0.8.3`版本
* (2019.08.14) 修复`PieChart``Label`无法自动更新的问题
* (2019.08.13) 修复`UpdateData`接口无法更新数据的问题
* (2019.08.07) 增加`SerieSymbol``Color``Opacity`配置
* (2019.08.07) 发布`v0.8.2`版本
* (2019.08.07) 修复区域平滑折线图显示异常的问题
* (2019.08.06) 修复`serie`系列数超过调色盘颜色数时获取的颜色异常的问题
* (2019.08.06) 修复当`Axis``minMaxType``Custom``max`设置为`100`不生效的问题
* (2019.08.04) 发布`v0.8.1`版本
* (2019.08.04) 修复从Inspector中修改数据不生效的问题
* (2019.08.04) 发布`v0.8.0`版本
* (2019.08.04) 优化`RadarChart`雷达图,增加多雷达图支持
* (2019.08.01) 增加代码API注释文档整理代码
* (2019.07.29) 增加`Radius``Area`两种南丁格尔玫瑰图展示类型
* (2019.07.29) 增加`SerieLabel`配置饼图标签,支持`Center``Inside``Outside`等显示位置
* (2019.07.28) 增加`PieChart`多饼图支持
* (2019.07.23) 优化`Theme`主题的自定义,切换主题时自定义配置不受影响
* (2019.07.22) 增加`EffectScatter`类型的散点图
* (2019.07.21) 增加`ScatterChart`散点图
* (2019.07.21) 增加`SerieData`支持多维数据配置
* (2019.07.20) 增加`Symbol`配置`Serie`标志图形的显示
* (2019.07.19) 增加用代码添加动态正弦曲线的示例`Demo11_AddSinCurve`
* (2019.07.19) 优化`Legend`的显示和控制
* (2019.07.18) 优化抗锯齿,曲线更平滑
* (2019.07.18) 增加`Tooltip`指示器类型,优化显示控制
* (2019.07.15) 增加`Size`设置图表尺寸
* (2019.07.14) 增加`二维数据`支持XY轴都可以设置为数值轴
* (2019.07.13) 增加`双坐标轴`支持,代码改动较大
* (2019.07.10) 发布`v0.5.0`版本
* (2019.07.09) 增加`AxisLine`配置坐标轴轴线和箭头
* (2019.07.03) 增加`AxisLabel`配置坐标轴`刻度标签`
* (2019.07.02) 增加`selected`等相关参数配置`PieChart`的选中效果
* (2019.06.30) 增加`SplitArea`配置坐标轴`分割区域`
* (2019.06.29) 增加`AxisName`配置坐标轴`名称`
* (2019.06.20) 增加`AreaAlpha`控制`RadarChart``Area`透明度
* (2019.06.13) 增加`DataZoom`实现`区域缩放`
* (2019.06.01) 增加`stepType`实现`LineChart``阶梯线图`
* (2019.05.29) 增加`InSameBar`实现`BarChart``非堆叠同柱`
* (2019.05.29) 增加`crossLabel`控制`Tooltip``十字准星指示器`
* (2019.05.24) 增加`堆叠区域图`
* (2019.05.16) 增加`AxisMinMaxType`控制坐标轴最大最小刻度
* (2019.05.15) 完善数据接口
* (2019.05.14) 增加X轴`AxisType.Value`模式支持
* (2019.05.13) 增加负数数值轴支持
* (2019.05.11) 增加自定义`Editor`编辑
* (2019.03.21) 增加`Tooltip`
* (2018.11.01) 增加`Default``Light``Dark`三种默认主题
* (2018.09.05) 发布`v0.1.0`版本

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e66d91d4c396b46bf87034c47ca3b43d
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: cc28a4ebefb884f6ab7132e3910b7461
guid: 05b7d15b7a92f4c1eb56dbf47522bf6c
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -1,4 +1,11 @@
using UnityEditor;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
using UnityEngine;
namespace XCharts

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 97c0f1cf754c54fd1913ec5b4129c6e5
guid: 2fbbaed3e670f478c844c1bdfc73d433
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -1,5 +1,12 @@
using UnityEditor;
using UnityEngine;

/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
namespace XCharts
{

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: bc37c9f35cd6b4f0f936526a63fb19a5
guid: 90c1787bea03849c8b6d19be625b7e17
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -0,0 +1,17 @@
{
"name": "XCharts.Editor.Demo",
"references": [
"XCharts.Demo.Runtime",
"XCharts.Runtime"
],
"optionalUnityReferences": [],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": []
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2d3606aaaf73f468984f4615b496f408
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 3aced18ddab0f41408ea7b63aeaf8ea4
timeCreated: 1555731741
licenseType: Free
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +1,6 @@
fileFormatVersion: 2
guid: f441980293a132b4fa06409caf7932ee
guid: f67670c9ee0e64262950aaf07562454e
folderAsset: yes
timeCreated: 1555731551
licenseType: Free
DefaultImporter:
externalObjects: {}
userData:

View File

@@ -0,0 +1,197 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace XCharts
{
[System.Serializable]
public class ChartModule
{
[SerializeField] private string m_Name;
[SerializeField] private string m_Title;
[SerializeField] private bool m_Selected;
[SerializeField] private GameObject m_Panel;
public string name { get { return m_Name; } set { m_Name = value; } }
public string title { get { return m_Title; } set { m_Title = value; } }
public bool select { get { return m_Selected; } set { m_Selected = value; } }
public GameObject panel { get { return m_Panel; } set { m_Panel = value; } }
public Button button { get; set; }
}
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo : MonoBehaviour
{
[SerializeField] private Color m_ButtonNormalColor;
[SerializeField] private Color m_ButtonSelectedColor;
[SerializeField] private Color m_ButtonHighlightColor;
[SerializeField] private List<ChartModule> m_ChartModule;
private GameObject m_BtnClone;
private Theme m_SelectedTheme;
private int m_LastSelectedModuleIndex;
private Button m_DefaultThemeButton;
private Button m_LightThemeButton;
private Button m_DarkThemeButton;
private Text m_Title;
private ScrollRect m_ScrollRect;
private Mask m_Mark;
void Awake()
{
m_SelectedTheme = Theme.Default;
m_ButtonNormalColor = ChartHelper.GetColor("#293C55FF");
m_ButtonSelectedColor = ChartHelper.GetColor("#e43c59ff");
m_ButtonHighlightColor = ChartHelper.GetColor("#0E151FFF");
m_ScrollRect = transform.Find("chart_detail").GetComponent<ScrollRect>();
m_Mark = transform.Find("chart_detail/Viewport").GetComponent<Mask>();
m_Mark.enabled = true;
m_Title = transform.Find("chart_title/Text").GetComponent<Text>();
InitThemeButton();
InitModuleButton();
}
void Update()
{
#if UNITY_EDITOR
if (m_ChartModule.Count <= 0) return;
int selectedModuleIndex = -1;
for (int i = 0; i < m_ChartModule.Count; i++)
{
if (selectedModuleIndex >= 0 && i > selectedModuleIndex)
{
m_ChartModule[i].select = false;
}
else if (m_ChartModule[i].select)
{
selectedModuleIndex = i;
}
}
if (selectedModuleIndex < 0) selectedModuleIndex = 0;
if (selectedModuleIndex != m_LastSelectedModuleIndex)
{
InitModuleButton();
}
if (!Application.isPlaying) m_Mark.enabled = false;
#endif
}
void InitModuleButton()
{
var btnPanel = transform.Find("chart_list");
m_BtnClone = transform.Find("btn_clone").gameObject;
m_BtnClone.SetActive(false);
ChartHelper.DestroyAllChildren(btnPanel);
foreach (var module in m_ChartModule)
{
var btnName = "btn_" + module.name;
GameObject btn;
if (btnPanel.Find(btnName))
{
btn = btnPanel.Find(btnName).gameObject;
btn.SetActive(true);
}
else
{
btn = GameObject.Instantiate(m_BtnClone);
btn.SetActive(true);
btn.name = btnName;
btn.transform.SetParent(btnPanel);
btn.transform.localPosition = Vector3.zero;
}
btn.transform.localScale = Vector3.one;
module.button = btn.GetComponent<Button>();
module.button.GetComponentInChildren<Text>().text = module.name;
ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) =>
{
ClickModule(module);
});
}
for (int i = 0; i < m_ChartModule.Count; i++)
{
var module = m_ChartModule[i];
if (module.select)
{
ClickModule(module);
m_LastSelectedModuleIndex = i;
break;
}
}
}
void ClickModule(ChartModule selectedModule)
{
foreach (var module in m_ChartModule)
{
if (selectedModule != module)
{
var block = module.button.colors;
block.highlightedColor = m_ButtonHighlightColor;
block.normalColor = m_ButtonNormalColor;
module.button.colors = block;
module.panel.SetActive(false);
module.select = false;
}
else
{
var block = module.button.colors;
block.highlightedColor = m_ButtonSelectedColor;
block.normalColor = m_ButtonSelectedColor;
module.button.colors = block;
module.panel.SetActive(true);
module.select = true;
}
}
m_ScrollRect.content = selectedModule.panel.GetComponent<RectTransform>();
m_Title.text = string.IsNullOrEmpty(selectedModule.title) ?
selectedModule.name : selectedModule.title;
}
void InitThemeButton()
{
m_DefaultThemeButton = transform.Find("chart_theme/btn_default").GetComponent<Button>();
m_LightThemeButton = transform.Find("chart_theme/btn_light").GetComponent<Button>();
m_DarkThemeButton = transform.Find("chart_theme/btn_dark").GetComponent<Button>();
m_DefaultThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Default);
m_LightThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Light);
m_DarkThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Dark);
m_DefaultThemeButton.onClick.AddListener(delegate () { SelecteTheme(Theme.Default); });
m_LightThemeButton.onClick.AddListener(delegate () { SelecteTheme(Theme.Light); });
m_DarkThemeButton.onClick.AddListener(delegate () { SelecteTheme(Theme.Dark); });
//SelecteTheme(Theme.Default);
}
void SelecteTheme(Theme theme)
{
m_SelectedTheme = theme;
m_DefaultThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Default);
m_LightThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Light);
m_DarkThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Dark);
var charts = transform.GetComponentsInChildren<BaseChart>();
foreach (var chart in charts)
{
chart.UpdateTheme(theme);
}
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 75496d488607d421fbf2c190f80ed0a7
guid: 85bc0178fe453471fb2706bf81a09235
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -0,0 +1,310 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
public class Demo00_CheatSheet : MonoBehaviour
{
private LineChart chart;
private float speed = 100f;
void Awake()
{
LoopDemo();
}
private void OnEnable()
{
LoopDemo();
}
void LoopDemo()
{
StopAllCoroutines();
StartCoroutine(CheatSheet());
}
IEnumerator CheatSheet()
{
StartCoroutine(InitChart());
StartCoroutine(ComponentTitle());
yield return new WaitForSeconds(2);
StartCoroutine(ComponentAxis());
yield return new WaitForSeconds(2);
StartCoroutine(ComponentGrid());
yield return new WaitForSeconds(2);
StartCoroutine(ComponentSerie());
yield return new WaitForSeconds(4);
StartCoroutine(ComponentLegend());
yield return new WaitForSeconds(4);
StartCoroutine(ComponentTheme());
yield return new WaitForSeconds(4);
StartCoroutine(ComponentDataZoom());
yield return new WaitForSeconds(5);
StartCoroutine(ComponentVisualMap());
yield return new WaitForSeconds(3);
LoopDemo();
}
IEnumerator InitChart()
{
chart = gameObject.GetComponent<LineChart>();
if (chart == null) gameObject.AddComponent<LineChart>();
chart.title.show = true;
chart.title.text = "术语解析-组件";
chart.grid.bottom = 30;
chart.grid.right = 30;
chart.grid.left = 50;
chart.grid.top = 80;
chart.dataZoom.enable = false;
chart.visualMap.enable = false;
chart.RemoveData();
chart.AddSerie(SerieType.Bar, "Bar");
chart.AddSerie(SerieType.Line, "Line");
for (int i = 0; i < 8; i++)
{
chart.AddXAxisData("x" + (i + 1));
chart.AddData(0, Random.Range(10, 100));
chart.AddData(1, Random.Range(30, 100));
}
yield return null;
}
IEnumerator ComponentTitle()
{
chart.title.text = "术语解析 - 组件";
chart.title.subText = "Title 标题:可指定主标题和子标题";
chart.xAxis0.show = true;
chart.yAxis0.show = true;
chart.series.list[0].show = false;
chart.series.list[1].show = false;
chart.legend.show = false;
for (int i = 0; i < 4; i++)
{
chart.title.show = !chart.title.show;
chart.RefreshChart();
yield return new WaitForSeconds(0.2f);
}
chart.title.show = true;
chart.RefreshChart();
}
IEnumerator ComponentAxis()
{
chart.title.subText = "Axis 坐标轴配置X和Y轴的轴线、刻度、标签等样式外观配置";
chart.series.list[0].show = false;
chart.series.list[1].show = false;
for (int i = 0; i < 4; i++)
{
chart.xAxis0.show = !chart.xAxis0.show;
chart.yAxis0.show = !chart.yAxis0.show;
chart.RefreshChart();
yield return new WaitForSeconds(0.2f);
}
chart.xAxis0.show = true;
chart.yAxis0.show = true;
chart.RefreshChart();
yield return new WaitForSeconds(1f);
}
IEnumerator ComponentGrid()
{
chart.title.subText = "Grid 网格:调整坐标系边距和颜色等";
for (int i = 0; i < 4; i++)
{
chart.grid.backgroundColor = i % 2 == 0 ? Color.clear : Color.grey;
chart.RefreshChart();
yield return new WaitForSeconds(0.2f);
}
chart.grid.backgroundColor = Color.clear;
chart.RefreshChart();
yield return new WaitForSeconds(1f);
}
IEnumerator ComponentSerie()
{
chart.title.subText = "Serie 系列:调整坐标系边距和颜色等";
chart.series.list[0].show = true;
chart.series.list[1].show = true;
chart.AnimationReset();
chart.RefreshChart();
yield return new WaitForSeconds(1.2f);
for (int i = 0; i < 4; i++)
{
chart.series.list[0].show = !chart.series.list[0].show;
chart.series.list[1].show = !chart.series.list[1].show;
chart.RefreshChart();
yield return new WaitForSeconds(0.2f);
}
chart.series.list[0].show = true;
chart.series.list[1].show = true;
chart.RefreshChart();
yield return new WaitForSeconds(1f);
}
IEnumerator ComponentLegend()
{
chart.title.subText = "Legend 图例:展示不同系列的名字和颜色,可控制系列显示等";
chart.legend.show = true;
chart.grid.top = 80;
chart.legend.location.top = 50;
chart.RefreshChart();
yield return new WaitForSeconds(1f);
for (int i = 0; i < 4; i++)
{
chart.legend.show = !chart.legend.show;
chart.RefreshChart();
yield return new WaitForSeconds(0.2f);
}
chart.legend.show = true;
chart.RefreshChart();
yield return new WaitForSeconds(1f);
chart.ClickLegendButton(0, "Line", false);
yield return new WaitForSeconds(0.2f);
chart.ClickLegendButton(0, "Line", true);
yield return new WaitForSeconds(0.5f);
chart.ClickLegendButton(1, "Bar", false);
yield return new WaitForSeconds(0.2f);
chart.ClickLegendButton(1, "Bar", true);
yield return new WaitForSeconds(0.5f);
}
IEnumerator ComponentTheme()
{
chart.title.subText = "Theme 主题:可从全局上配置图表的颜色、字体等效果,支持默认主题切换";
yield return new WaitForSeconds(1f);
chart.title.subText = "Theme 主题Light主题";
chart.UpdateTheme(Theme.Light);
yield return new WaitForSeconds(1f);
chart.title.subText = "Theme 主题Dark主题";
chart.UpdateTheme(Theme.Dark);
yield return new WaitForSeconds(1f);
chart.title.subText = "Theme 主题Default主题";
chart.UpdateTheme(Theme.Default);
yield return new WaitForSeconds(1f);
}
IEnumerator ComponentDataZoom()
{
chart.title.subText = "DataZoom 区域缩放:可通过拖、拽、缩小、放大来观察细节数据";
chart.grid.bottom = 70;
chart.dataZoom.enable = true;
chart.dataZoom.supportInside = true;
chart.dataZoom.supportSlider = true;
chart.dataZoom.height = 30;
chart.dataZoom.start = 0;
chart.dataZoom.end = 100;
chart.RefreshChart();
for (int i = 0; i < 4; i++)
{
chart.dataZoom.supportSlider = !chart.dataZoom.supportSlider;
chart.RefreshChart();
yield return new WaitForSeconds(0.2f);
}
chart.dataZoom.supportSlider = true;
chart.RefreshChart();
yield return new WaitForSeconds(1f);
while (chart.dataZoom.start < 40)
{
chart.dataZoom.start += speed * Time.deltaTime * 0.8f;
chart.RefreshDataZoom();
chart.RefreshChart();
yield return null;
}
while (chart.dataZoom.end > 60)
{
chart.dataZoom.end -= speed * Time.deltaTime * 0.8f;
chart.RefreshDataZoom();
chart.RefreshChart();
yield return null;
}
while (chart.dataZoom.start > 0)
{
chart.dataZoom.start -= speed * Time.deltaTime * 0.8f;
chart.dataZoom.end -= speed * Time.deltaTime * 0.8f;
chart.RefreshDataZoom();
chart.RefreshChart();
yield return null;
}
while (chart.dataZoom.end < 100)
{
chart.dataZoom.start += speed * Time.deltaTime * 0.8f;
chart.dataZoom.end += speed * Time.deltaTime * 0.8f;
chart.RefreshDataZoom();
chart.RefreshChart();
yield return null;
}
while (chart.dataZoom.start > 0 || chart.dataZoom.end < 100)
{
chart.dataZoom.start -= speed * Time.deltaTime * 0.8f;
chart.dataZoom.end += speed * Time.deltaTime * 0.8f;
chart.RefreshDataZoom();
chart.RefreshChart();
yield return null;
}
}
IEnumerator ComponentVisualMap()
{
chart.title.subText = "VisualMap 视觉映射:可从全局上配置图表的颜色、字体等效果,支持默认主题切换";
chart.visualMap.enable = true;
chart.visualMap.show = true;
chart.visualMap.orient = Orient.Vertical;
chart.visualMap.calculable = true;
chart.visualMap.min = 0;
chart.visualMap.max = 100;
chart.visualMap.range[0] = 0;
chart.visualMap.range[1] = 100;
var colors = new List<string>{"#313695", "#4575b4", "#74add1", "#abd9e9", "#e0f3f8", "#ffffbf",
"#fee090", "#fdae61", "#f46d43", "#d73027", "#a50026"};
chart.visualMap.inRange.Clear();
foreach (var str in colors)
{
chart.visualMap.inRange.Add(ThemeInfo.GetColor(str));
}
chart.grid.left = 80;
chart.grid.bottom = 100;
chart.RefreshChart();
yield return new WaitForSeconds(1f);
while (chart.visualMap.rangeMin < 40)
{
chart.visualMap.rangeMin += speed * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
while (chart.visualMap.rangeMax > 60)
{
chart.visualMap.rangeMax -= speed * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
while (chart.visualMap.rangeMin > 0 || chart.visualMap.rangeMax < 100)
{
chart.visualMap.rangeMin -= speed * Time.deltaTime;
chart.visualMap.rangeMax += speed * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4f4f93f97ce4c4274a4153986a3e5752
guid: 060e74df53e174634b42ea5f3c852e94
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -0,0 +1,270 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections;
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
public class Demo10_LineChart : MonoBehaviour
{
private LineChart chart;
private Serie serie;
private int m_DataNum = 8;
void Awake()
{
LoopDemo();
}
private void OnEnable()
{
LoopDemo();
}
void LoopDemo()
{
StopAllCoroutines();
StartCoroutine(PieDemo());
}
IEnumerator PieDemo()
{
StartCoroutine(AddSimpleLine());
yield return new WaitForSeconds(2);
StartCoroutine(ChangeLineType());
yield return new WaitForSeconds(8);
StartCoroutine(LineAreaStyleSettings());
yield return new WaitForSeconds(5);
StartCoroutine(LineArrowSettings());
yield return new WaitForSeconds(2);
StartCoroutine(LineSymbolSettings());
yield return new WaitForSeconds(7);
StartCoroutine(LineLabelSettings());
yield return new WaitForSeconds(3);
StartCoroutine(LineMutilSerie());
yield return new WaitForSeconds(5);
LoopDemo();
}
IEnumerator AddSimpleLine()
{
chart = gameObject.GetComponent<LineChart>();
if (chart == null) chart = gameObject.AddComponent<LineChart>();
chart.title.text = "LineChart - 折线图";
chart.title.subText = "普通折线图";
chart.yAxis0.minMaxType = Axis.AxisMinMaxType.Custom;
chart.yAxis0.min = 0;
chart.yAxis0.max = 100;
chart.RemoveData();
serie = chart.AddSerie(SerieType.Line, "Line");
for (int i = 0; i < m_DataNum; i++)
{
chart.AddXAxisData("x" + (i + 1));
chart.AddData(0, UnityEngine.Random.Range(30, 90));
}
yield return new WaitForSeconds(1);
}
IEnumerator ChangeLineType()
{
chart.title.subText = "LineTyle - 曲线图";
serie.lineType = LineType.Smooth;
chart.RefreshChart();
yield return new WaitForSeconds(1);
chart.title.subText = "LineTyle - 阶梯线图";
serie.lineType = LineType.StepStart;
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.lineType = LineType.StepMiddle;
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.lineType = LineType.StepEnd;
chart.RefreshChart();
yield return new WaitForSeconds(1);
chart.title.subText = "LineTyle - 虚线";
serie.lineType = LineType.Dash;
chart.RefreshChart();
yield return new WaitForSeconds(1);
chart.title.subText = "LineTyle - 点线";
serie.lineType = LineType.Dot;
chart.RefreshChart();
yield return new WaitForSeconds(1);
chart.title.subText = "LineTyle - 点划线";
serie.lineType = LineType.DashDot;
chart.RefreshChart();
yield return new WaitForSeconds(1);
chart.title.subText = "LineTyle - 双点划线";
serie.lineType = LineType.DashDotDot;
chart.RefreshChart();
serie.lineType = LineType.Normal;
chart.RefreshChart();
}
IEnumerator LineAreaStyleSettings()
{
chart.title.subText = "AreaStyle 面积图";
serie.areaStyle.show = true;
chart.RefreshChart();
yield return new WaitForSeconds(1f);
chart.title.subText = "AreaStyle 面积图";
serie.lineType = LineType.Smooth;
serie.areaStyle.show = true;
chart.RefreshChart();
yield return new WaitForSeconds(1f);
chart.title.subText = "AreaStyle 面积图 - 调整透明度";
while (serie.areaStyle.opacity > 0.4)
{
serie.areaStyle.opacity -= 0.6f * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
yield return new WaitForSeconds(1);
chart.title.subText = "AreaStyle 面积图 - 渐变";
serie.areaStyle.toColor = Color.white;
chart.RefreshChart();
yield return new WaitForSeconds(1);
}
IEnumerator LineArrowSettings()
{
chart.title.subText = "LineArrow 头部箭头";
serie.lineArrow.show = true;
serie.lineArrow.position = LineArrow.Position.Start;
chart.RefreshChart();
yield return new WaitForSeconds(1);
chart.title.subText = "LineArrow 尾部箭头";
serie.lineArrow.position = LineArrow.Position.End;
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.lineArrow.show = false;
}
/// <summary>
/// SerieSymbol 相关设置
/// </summary>
/// <returns></returns>
IEnumerator LineSymbolSettings()
{
chart.title.subText = "SerieSymbol 图形标记";
while (serie.symbol.size < 5)
{
serie.symbol.size += 2.5f * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
chart.title.subText = "SerieSymbol 图形标记 - 空心圆";
yield return new WaitForSeconds(1);
chart.title.subText = "SerieSymbol 图形标记 - 实心圆";
serie.symbol.type = SerieSymbolType.Circle;
chart.RefreshChart();
yield return new WaitForSeconds(1);
chart.title.subText = "SerieSymbol 图形标记 - 三角形";
serie.symbol.type = SerieSymbolType.Triangle;
chart.RefreshChart();
yield return new WaitForSeconds(1);
chart.title.subText = "SerieSymbol 图形标记 - 正方形";
serie.symbol.type = SerieSymbolType.Rect;
chart.RefreshChart();
yield return new WaitForSeconds(1);
chart.title.subText = "SerieSymbol 图形标记 - 菱形";
serie.symbol.type = SerieSymbolType.Diamond;
chart.RefreshChart();
yield return new WaitForSeconds(1);
chart.title.subText = "SerieSymbol 图形标记";
serie.symbol.type = SerieSymbolType.EmptyCircle;
chart.RefreshChart();
yield return new WaitForSeconds(1);
}
/// <summary>
/// SerieLabel相关配置
/// </summary>
/// <returns></returns>
IEnumerator LineLabelSettings()
{
chart.title.subText = "SerieLabel 文本标签";
serie.label.show = true;
serie.label.border = false;
chart.RefreshChart();
while (serie.label.offset[1] < 20)
{
serie.label.offset = new Vector3(serie.label.offset.x, serie.label.offset.y + 20f * Time.deltaTime);
chart.RefreshChart();
yield return null;
}
yield return new WaitForSeconds(1);
serie.label.border = true;
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.label.color = Color.white;
serie.label.backgroundColor = Color.grey;
chart.RefreshLabel();
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.label.show = false;
chart.RefreshChart();
}
/// <summary>
/// 添加多条线图
/// </summary>
/// <returns></returns>
IEnumerator LineMutilSerie()
{
chart.title.subText = "多系列";
var serie2 = chart.AddSerie(SerieType.Line, "Line2");
serie2.lineType = LineType.Normal;
for (int i = 0; i < m_DataNum; i++)
{
chart.AddData(1, UnityEngine.Random.Range(30, 90));
}
yield return new WaitForSeconds(1);
var serie3 = chart.AddSerie(SerieType.Line, "Line3");
serie3.lineType = LineType.Normal;
for (int i = 0; i < m_DataNum; i++)
{
chart.AddData(2, UnityEngine.Random.Range(30, 90));
}
yield return new WaitForSeconds(1);
chart.yAxis0.minMaxType = Axis.AxisMinMaxType.Default;
chart.title.subText = "多系列 - 堆叠";
serie.stack = "samename";
serie2.stack = "samename";
serie3.stack = "samename";
chart.RefreshChart();
yield return new WaitForSeconds(1);
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1a4ce8176d040474db7238ccc962c79f
guid: ce2fe7c8c98c644b9a8585050ea1d963
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -0,0 +1,68 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo11_AddSinCurve : MonoBehaviour
{
private float time;
public int angle;
private LineChart chart;
void Awake()
{
chart = gameObject.GetComponent<LineChart>();
if (chart != null)
{
GameObject.DestroyImmediate(chart);
}
chart = gameObject.AddComponent<LineChart>();
chart.title.show = true;
chart.title.text = "Sin Curve";
chart.tooltip.show = true;
chart.legend.show = false;
chart.xAxises[0].show = true;
chart.xAxises[1].show = false;
chart.yAxises[0].show = true;
chart.yAxises[1].show = false;
chart.xAxises[0].type = Axis.AxisType.Value;
chart.yAxises[0].type = Axis.AxisType.Value;
chart.xAxises[0].boundaryGap = false;
chart.xAxises[0].maxCache = 0;
chart.series.list[0].maxCache = 0;
chart.RemoveData();
var serie = chart.AddSerie(SerieType.Line);
serie.symbol.type = SerieSymbolType.None;
serie.lineType = LineType.Normal;
for (angle = 0; angle < 1080; angle++)
{
float xvalue = Mathf.PI / 180 * angle;
float yvalue = Mathf.Sin(xvalue);
chart.AddData(0, xvalue, yvalue);
}
}
void Update()
{
if (angle > 3000) return;
angle++;
float xvalue = Mathf.PI / 180 * angle;
float yvalue = Mathf.Sin(xvalue);
chart.AddData(0, xvalue, yvalue);
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ee2ff4f81f1754f9e8e1df797df8c201
guid: dfc9b72c568f74d1dbf37310311aac8e
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -0,0 +1,39 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEngine;
using UnityEngine.UI;
namespace XCharts
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo12_CustomDrawing : MonoBehaviour
{
LineChart chart;
void Awake()
{
chart = gameObject.GetComponent<LineChart>();
if (chart == null) return;
chart.customDrawCallback = delegate (VertexHelper vh)
{
var dataPoints = chart.series.list[0].dataPoints;
if (dataPoints.Count > 0)
{
var pos = dataPoints[3];
var zeroPos = new Vector3(chart.coordinateX, chart.coordinateY);
var startPos = new Vector3(pos.x, zeroPos.y);
var endPos = new Vector3(pos.x, zeroPos.y + chart.coordinateHeight);
ChartDrawer.DrawLine(vh, startPos, endPos, 1, Color.blue);
ChartDrawer.DrawCricle(vh, pos, 5, Color.blue);
}
};
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a657ed0fd5aeb4312801338fb5308811
guid: e27021e8c8377464a8b439cf785080ee
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -0,0 +1,48 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo13_LineSimple : MonoBehaviour
{
void Awake()
{
var chart = gameObject.GetComponent<LineChart>();
if (chart == null)
{
chart = gameObject.AddComponent<LineChart>();
}
chart.title.show = true;
chart.title.text = "Line Simple";
chart.tooltip.show = true;
chart.legend.show = false;
chart.xAxises[0].show = true;
chart.xAxises[1].show = false;
chart.yAxises[0].show = true;
chart.yAxises[1].show = false;
chart.xAxises[0].type = Axis.AxisType.Category;
chart.yAxises[0].type = Axis.AxisType.Value;
chart.xAxises[0].splitNumber = 10;
chart.xAxises[0].boundaryGap = true;
chart.RemoveData();
chart.AddSerie(SerieType.Line);
for (int i = 0; i < 10; i++)
{
chart.AddXAxisData("x" + i);
chart.AddData(0, Random.Range(10, 20));
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 75813849985304690b882bdd95364bae
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,167 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections;
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
public class Demo20_BarChart : MonoBehaviour
{
private BarChart chart;
private Serie serie, serie2;
private int m_DataNum = 5;
void Awake()
{
LoopDemo();
}
private void OnEnable()
{
LoopDemo();
}
void LoopDemo()
{
StopAllCoroutines();
StartCoroutine(PieDemo());
}
IEnumerator PieDemo()
{
StartCoroutine(AddSimpleBar());
yield return new WaitForSeconds(2);
StartCoroutine(BarMutilSerie());
yield return new WaitForSeconds(3);
StartCoroutine(ZebraBar());
yield return new WaitForSeconds(3);
StartCoroutine(SameBarAndNotStack());
yield return new WaitForSeconds(3);
StartCoroutine(SameBarAndStack());
yield return new WaitForSeconds(3);
StartCoroutine(SameBarAndPercentStack());
yield return new WaitForSeconds(10);
LoopDemo();
}
IEnumerator AddSimpleBar()
{
chart = gameObject.GetComponent<BarChart>();
if (chart == null) chart = gameObject.AddComponent<BarChart>();
chart.title.text = "BarChart - 柱状图";
chart.title.subText = "普通柱状图";
chart.yAxis0.minMaxType = Axis.AxisMinMaxType.Default;
chart.RemoveData();
serie = chart.AddSerie(SerieType.Bar, "Bar1");
for (int i = 0; i < m_DataNum; i++)
{
chart.AddXAxisData("x" + (i + 1));
chart.AddData(0, UnityEngine.Random.Range(30, 90));
}
yield return new WaitForSeconds(1);
}
IEnumerator BarMutilSerie()
{
chart.title.subText = "多条柱状图";
float now = serie.barWidth - 0.35f;
while (serie.barWidth > 0.35f)
{
serie.barWidth -= now * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
serie2 = chart.AddSerie(SerieType.Bar, "Bar2");
serie2.lineType = LineType.Normal;
serie2.barWidth = 0.35f;
for (int i = 0; i < m_DataNum; i++)
{
chart.AddData(1, UnityEngine.Random.Range(20, 90));
}
yield return new WaitForSeconds(1);
}
IEnumerator ZebraBar()
{
chart.title.subText = "斑马柱状图";
serie.barType = BarType.Zebra;
serie2.barType = BarType.Zebra;
serie.barZebraWidth = serie.barZebraGap = 4;
serie2.barZebraWidth = serie2.barZebraGap = 4;
chart.RefreshChart();
yield return new WaitForSeconds(1);
}
IEnumerator SameBarAndNotStack()
{
chart.title.subText = "非堆叠同柱";
serie.barType = serie2.barType = BarType.Normal;
serie.stack = "";
serie2.stack = "";
serie.barGap = -1;
serie2.barGap = -1;
chart.RefreshAxisMinMaxValue();
yield return new WaitForSeconds(1);
}
IEnumerator SameBarAndStack()
{
chart.title.subText = "堆叠同柱";
serie.barType = serie2.barType = BarType.Normal;
serie.stack = "samename";
serie2.stack = "samename";
chart.RefreshAxisMinMaxValue();
yield return new WaitForSeconds(1);
float now = 0.6f - serie.barWidth;
while (serie.barWidth < 0.6f)
{
serie.barWidth += now * Time.deltaTime;
serie2.barWidth += now * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
serie.barWidth = serie2.barWidth;
chart.RefreshChart();
yield return new WaitForSeconds(1);
}
IEnumerator SameBarAndPercentStack()
{
chart.title.subText = "百分比堆叠同柱";
serie.barType = serie2.barType = BarType.Normal;
serie.stack = "samename";
serie2.stack = "samename";
serie.barPercentStack = true;
serie.label.show = true;
serie.label.position = SerieLabel.Position.Center;
serie.label.border = false;
serie.label.color = Color.white;
serie.label.formatter = "{d:f0}%";
serie2.label.show = true;
serie2.label.position = SerieLabel.Position.Center;
serie2.label.border = false;
serie2.label.color = Color.white;
serie2.label.formatter = "{d:f0}%";
chart.RefreshLabel();
chart.RefreshChart();
yield return new WaitForSeconds(1);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9b4ec86ec75e9428e878f99c14f7676f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,206 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections;
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
public class Demo30_PieChart : MonoBehaviour
{
private PieChart chart;
private Serie serie, serie1;
private float m_RadiusSpeed = 100f;
private float m_CenterSpeed = 1f;
void Awake()
{
LoopDemo();
}
private void OnEnable()
{
LoopDemo();
}
void LoopDemo()
{
StopAllCoroutines();
StartCoroutine(PieDemo());
}
IEnumerator PieDemo()
{
StartCoroutine(PieAdd());
yield return new WaitForSeconds(2);
StartCoroutine(PieShowLabel());
yield return new WaitForSeconds(4);
StartCoroutine(Doughnut());
yield return new WaitForSeconds(3);
StartCoroutine(DoublePie());
yield return new WaitForSeconds(2);
StartCoroutine(RosePie());
yield return new WaitForSeconds(5);
LoopDemo();
}
IEnumerator PieAdd()
{
chart = gameObject.GetComponent<PieChart>();
if (chart == null) chart = gameObject.AddComponent<PieChart>();
chart.title.text = "PieChart - 饼图";
chart.title.subText = "基础饼图";
chart.legend.show = true;
chart.legend.location.align = Location.Align.TopLeft;
chart.legend.location.top = 60;
chart.legend.location.left = 2;
chart.legend.itemWidth = 70;
chart.legend.itemHeight = 20;
chart.legend.orient = Orient.Vertical;
chart.RemoveData();
serie = chart.AddSerie(SerieType.Pie, "访问来源");
serie.pieRadius[0] = 0;
serie.pieRadius[1] = 110;
serie.pieCenter[0] = 0.5f;
serie.pieCenter[1] = 0.4f;
chart.AddData(0, 335, "直接访问");
chart.AddData(0, 310, "邮件营销");
chart.AddData(0, 243, "联盟广告");
chart.AddData(0, 135, "视频广告");
chart.AddData(0, 1548, "搜索引擎");
chart.RefreshLabel();
yield return new WaitForSeconds(1);
}
IEnumerator PieShowLabel()
{
chart.title.subText = "显示文本标签";
serie.label.show = true;
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.label.lineType = SerieLabel.LineType.Curves;
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.label.lineType = SerieLabel.LineType.HorizontalLine;
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.label.lineType = SerieLabel.LineType.BrokenLine;
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.label.show = false;
chart.RefreshChart();
}
IEnumerator Doughnut()
{
chart.title.subText = "圆环图";
serie.pieRadius[0] = 2f;
while (serie.pieRadius[0] < serie.pieRadius[1] * 0.7f)
{
serie.pieRadius[0] += m_RadiusSpeed * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
serie.pieSpace = 1f;
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.data[0].selected = true;
chart.RefreshChart();
yield return new WaitForSeconds(1);
serie.pieSpace = 0f;
serie.data[0].selected = false;
chart.RefreshChart();
yield return new WaitForSeconds(1);
}
IEnumerator DoublePie()
{
chart.title.subText = "多图组合";
serie1 = chart.AddSerie(SerieType.Pie, "访问来源2");
chart.AddData(1, 335, "直达");
chart.AddData(1, 679, "营销广告");
chart.AddData(1, 1548, "搜索引擎");
serie1.pieRadius[0] = 0;
serie1.pieRadius[1] = 2f;
serie1.pieCenter[0] = 0.5f;
serie1.pieCenter[1] = 0.4f;
chart.RefreshChart();
while (serie1.pieRadius[1] < serie.pieRadius[0] * 0.75f)
{
serie1.pieRadius[1] += m_RadiusSpeed * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
serie1.label.show = true;
serie1.label.position = SerieLabel.Position.Inside;
serie1.label.color = Color.white;
serie1.label.fontSize = 14;
serie1.label.border = false;
chart.RefreshLabel();
chart.RefreshChart();
yield return new WaitForSeconds(1);
}
IEnumerator RosePie()
{
chart.title.subText = "玫瑰图";
chart.legend.show = false;
serie1.ClearData();
serie.ClearData();
serie1.pieRadius = serie.pieRadius = new float[2] { 0, 80 };
serie1.label.position = SerieLabel.Position.Outside;
serie1.label.lineType = SerieLabel.LineType.Curves;
serie1.label.color = Color.clear;
for (int i = 0; i < 2; i++)
{
chart.AddData(i, 10, "rose1");
chart.AddData(i, 5, "rose2");
chart.AddData(i, 15, "rose3");
chart.AddData(i, 25, "rose4");
chart.AddData(i, 20, "rose5");
chart.AddData(i, 35, "rose6");
chart.AddData(i, 30, "rose7");
chart.AddData(i, 40, "rose8");
}
while (serie.pieCenter[0] > 0.25f || serie1.pieCenter[0] < 0.7f)
{
if (serie.pieCenter[0] > 0.25f) serie.pieCenter[0] -= m_CenterSpeed * Time.deltaTime;
if (serie1.pieCenter[0] < 0.7f) serie1.pieCenter[0] += m_CenterSpeed * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
yield return new WaitForSeconds(1);
while (serie.pieRadius[0] > 3f)
{
serie.pieRadius[0] -= m_RadiusSpeed * Time.deltaTime;
serie1.pieRadius[0] -= m_RadiusSpeed * Time.deltaTime;
chart.RefreshChart();
yield return null;
}
serie.pieRadius[0] = 0;
serie1.pieRadius[0] = 0;
serie.pieRoseType = RoseType.Area;
serie1.pieRoseType = RoseType.Radius;
chart.RefreshChart();
yield return new WaitForSeconds(1);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ccf4c940af6c343e6abea9580e3915bb
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,38 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo50_Scatter : MonoBehaviour
{
private ScatterChart chart;
void Awake()
{
chart = gameObject.GetComponent<ScatterChart>();
if (chart == null) return;
chart.series.SetSerieSymbolSizeCallback(SymbolSize, SymbolSelectedSize);
}
float SymbolSize(List<float> data)
{
//return Mathf.Clamp(data[1] * 10,1,100);
return (float)(Mathf.Sqrt(data[2]) / 6e2);
}
float SymbolSelectedSize(List<float> data)
{
//return Mathf.Clamp(data[1] * 10,1,100);
return (float)(Mathf.Sqrt(data[2]) / 5e2);
}
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: bb4941eb0bbd14736b16b39d256255bd
guid: 9f7e5ced8db104dcc8447f1e5ac903f4
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -0,0 +1,104 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo60_Heatmap : MonoBehaviour
{
private HeatmapChart chart;
void Awake()
{
chart = gameObject.GetComponent<HeatmapChart>();
if (chart == null)
{
chart = gameObject.AddComponent<HeatmapChart>();
}
chart.title.text = "HeatmapChart";
chart.tooltip.type = Tooltip.Type.None;
chart.grid.left = 100;
chart.grid.right = 60;
chart.grid.bottom = 60;
//目前只支持Category
chart.xAxises[0].type = Axis.AxisType.Category;
chart.yAxises[0].type = Axis.AxisType.Category;
chart.xAxises[0].boundaryGap = true;
chart.xAxises[0].boundaryGap = true;
chart.xAxises[0].splitNumber = 10;
chart.yAxises[0].splitNumber = 10;
//清空数据重新添加
chart.RemoveData();
var serie = chart.AddSerie(SerieType.Heatmap, "serie1");
//设置样式
serie.itemStyle.show = true;
serie.itemStyle.borderWidth = 1;
serie.itemStyle.borderColor = Color.clear;
//设置高亮样式
serie.emphasis.show = true;
serie.emphasis.itemStyle.show = true;
serie.emphasis.itemStyle.borderWidth = 1;
serie.emphasis.itemStyle.borderColor = Color.black;
//设置视觉映射组件
chart.visualMap.enable = true;
chart.visualMap.max = 10;
chart.visualMap.range[0] = 0f;
chart.visualMap.range[1] = 10f;
chart.visualMap.orient = Orient.Vertical;
chart.visualMap.calculable = true;
chart.visualMap.location.align = Location.Align.BottomLeft;
chart.visualMap.location.bottom = 100;
chart.visualMap.location.left = 30;
//清空颜色重新添加
chart.visualMap.inRange.Clear();
var heatmapGridWid = 10f;
int xSplitNumber = (int)(chart.coordinateWidth / heatmapGridWid);
int ySplitNumber = (int)(chart.coordinateHeight / heatmapGridWid);
var colors = new List<string>{"#313695", "#4575b4", "#74add1", "#abd9e9", "#e0f3f8", "#ffffbf",
"#fee090", "#fdae61", "#f46d43", "#d73027", "#a50026"};
foreach (var str in colors)
{
chart.visualMap.inRange.Add(ThemeInfo.GetColor(str));
}
//添加xAxis的数据
for (int i = 0; i < xSplitNumber; i++)
{
chart.AddXAxisData((i + 1).ToString());
}
//添加yAxis的数据
for (int i = 0; i < ySplitNumber; i++)
{
chart.AddYAxisData((i + 1).ToString());
}
for (int i = 0; i < xSplitNumber; i++)
{
for (int j = 0; j < ySplitNumber; j++)
{
var value = 0f;
var rate = Random.Range(0, 101);
if (rate > 70) value = Random.Range(8f, 10f);
else value = Random.Range(1f, 8f);
var list = new List<float> { i, j, value };
//至少是一个三位数据x,y,value
chart.AddData(0, list);
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 14e10f24be7ee4f609b36b904224382d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,71 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System;
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
[RequireComponent(typeof(CoordinateChart))]
public class Demo_Dynamic : MonoBehaviour
{
public int maxCacheDataNumber = 100;
public float initDataTime = 2;
private CoordinateChart chart;
private float updateTime;
private float initTime;
private int initCount;
private int count;
private bool isInited;
private DateTime timeNow;
void Awake()
{
chart = gameObject.GetComponentInChildren<CoordinateChart>();
chart.RemoveData();
var serie = chart.AddSerie(SerieType.Line);
serie.symbol.type = SerieSymbolType.None;
serie.maxCache = maxCacheDataNumber;
chart.xAxises[0].maxCache = maxCacheDataNumber;
timeNow = DateTime.Now;
timeNow = timeNow.AddSeconds(-maxCacheDataNumber);
}
void Update()
{
if (initCount < maxCacheDataNumber)
{
int count = (int)(maxCacheDataNumber / initDataTime * Time.deltaTime);
for (int i = 0; i < count; i++)
{
timeNow = timeNow.AddSeconds(1);
string category = timeNow.ToString("hh:mm:ss");
float value = UnityEngine.Random.Range(60, 150);
chart.AddXAxisData(category);
chart.AddData(0, value);
initCount++;
if (initCount > maxCacheDataNumber) break;
}
chart.RefreshChart();
}
updateTime += Time.deltaTime;
if (updateTime >= 1)
{
updateTime = 0;
count++;
string category = DateTime.Now.ToString("hh:mm:ss");
float value = UnityEngine.Random.Range(60, 150);
chart.AddXAxisData(category);
chart.AddData(0, value);
chart.RefreshChart();
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d7774c94c82584c0ca35e6f79d1fc29c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,55 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
[RequireComponent(typeof(CoordinateChart))]
public class Demo_LargeData : MonoBehaviour
{
public int maxCacheDataNumber = 3000;
public float initDataTime = 5;
private CoordinateChart chart;
private float initTime;
private int initCount = 0;
private System.DateTime timeNow;
void Awake()
{
chart = gameObject.GetComponentInChildren<CoordinateChart>();
timeNow = System.DateTime.Now;
chart.ClearAxisData();
chart.series.ClearData();
chart.series.list[0].maxCache = maxCacheDataNumber;
chart.xAxises[0].maxCache = maxCacheDataNumber;
chart.title.text = maxCacheDataNumber + "数据";
}
private void Update()
{
if (initCount < maxCacheDataNumber)
{
for (int i = 0; i < 10; i++)
{
initCount++;
if (initCount > maxCacheDataNumber) break;
chart.title.text = initCount + "数据";
timeNow = timeNow.AddSeconds(1);
float xvalue = Mathf.PI / 180 * initCount;
float yvalue = Mathf.Sin(xvalue);
chart.AddData(0, 15 + yvalue * 2);
chart.AddXAxisData(timeNow.ToString("hh:mm:ss"));
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c777ceb41c4c743d2ba0ea573287be9e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,46 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEngine;
namespace XCharts
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
[RequireComponent(typeof(PieChart))]
public class Demo_PieChart : MonoBehaviour
{
private PieChart chart;
private float time;
private int count = 0;
private void Awake()
{
chart = transform.GetComponent<PieChart>();
chart.ClearData();
}
private void Update()
{
time += Time.deltaTime;
if (time > 1)
{
time = 0;
if (count < 5)
{
chart.AddData(0, Random.Range(10, 100), "time" + count);
}
else
{
int index = count % 5;
chart.UpdateData(0, Random.Range(10, 100), index);
}
count++;
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8c85e69c8e4374481be85fda06a45209
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,41 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEngine;
using UnityEngine.UI;
namespace XCharts
{
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo_Test : MonoBehaviour
{
LineChart chart;
void Awake()
{
chart = gameObject.GetComponent<LineChart>();
if (chart == null)
{
chart = gameObject.AddComponent<LineChart>();
}
var buttom = transform.parent.gameObject.GetComponentInChildren<Button>();
buttom.onClick.AddListener(AddData);
}
void AddData()
{
chart.series.list[0].ClearData();
chart.series.list[1].ClearData();
for (int i = 0; i < 5; i++)
{
chart.AddData(0, Random.Range(20, 100));
chart.AddData(1, Random.Range(1, 10));
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e538728f2646249ae9c9206b8ceffe25
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,14 @@
{
"name": "XCharts.Demo.Runtime",
"references": [
"XCharts.Runtime"
],
"optionalUnityReferences": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": []
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 80ba6ed17de4740039736cf78bca3a17
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,188 +0,0 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using XCharts;
[System.Serializable]
public class ChartModule
{
[SerializeField] private string m_Name;
[SerializeField] private string m_Title;
[SerializeField] private bool m_Selected;
[SerializeField] private GameObject m_Panel;
public string name { get { return m_Name; } set { m_Name = value; } }
public string title { get { return m_Title; } set { m_Title = value; } }
public bool select { get { return m_Selected; } set { m_Selected = value; } }
public GameObject panel { get { return m_Panel; } set { m_Panel = value; } }
public Button button { get; set; }
}
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo : MonoBehaviour
{
[SerializeField] private Color m_ButtonNormalColor;
[SerializeField] private Color m_ButtonSelectedColor;
[SerializeField] private Color m_ButtonHighlightColor;
[SerializeField] private List<ChartModule> m_ChartModule;
private GameObject m_BtnClone;
private Theme m_SelectedTheme;
private int m_LastSelectedModuleIndex;
private Button m_DefaultThemeButton;
private Button m_LightThemeButton;
private Button m_DarkThemeButton;
private Text m_Title;
private ScrollRect m_ScrollRect;
private Mask m_Mark;
void Awake()
{
m_SelectedTheme = Theme.Default;
m_ButtonNormalColor = ChartHelper.GetColor("#293C55FF");
m_ButtonSelectedColor = ChartHelper.GetColor("#e43c59ff");
m_ButtonHighlightColor = ChartHelper.GetColor("#0E151FFF");
m_ScrollRect = transform.Find("chart_detail").GetComponent<ScrollRect>();
m_Mark = transform.Find("chart_detail/Viewport").GetComponent<Mask>();
m_Mark.enabled = true;
m_Title = transform.Find("chart_title/Text").GetComponent<Text>();
InitThemeButton();
InitModuleButton();
}
void Update()
{
#if UNITY_EDITOR
if (m_ChartModule.Count <= 0) return;
int selectedModuleIndex = -1;
for (int i = 0; i < m_ChartModule.Count; i++)
{
if (selectedModuleIndex >= 0 && i > selectedModuleIndex)
{
m_ChartModule[i].select = false;
}
else if (m_ChartModule[i].select)
{
selectedModuleIndex = i;
}
}
if (selectedModuleIndex < 0) selectedModuleIndex = 0;
if (selectedModuleIndex != m_LastSelectedModuleIndex)
{
InitModuleButton();
}
#endif
}
void InitModuleButton()
{
var btnPanel = transform.Find("chart_list");
m_BtnClone = transform.Find("btn_clone").gameObject;
m_BtnClone.SetActive(false);
ChartHelper.DestoryAllChilds(btnPanel);
foreach (var module in m_ChartModule)
{
var btnName = "btn_" + module.name;
GameObject btn;
if (btnPanel.Find(btnName))
{
btn = btnPanel.Find(btnName).gameObject;
btn.SetActive(true);
}
else
{
btn = GameObject.Instantiate(m_BtnClone);
btn.SetActive(true);
btn.name = btnName;
btn.transform.SetParent(btnPanel);
btn.transform.localPosition = Vector3.zero;
}
btn.transform.localScale = Vector3.one;
module.button = btn.GetComponent<Button>();
module.button.GetComponentInChildren<Text>().text = module.name;
ChartHelper.AddEventListener(btn.gameObject, EventTriggerType.PointerDown, (data) =>
{
ClickModule(module);
});
}
for (int i = 0; i < m_ChartModule.Count; i++)
{
var module = m_ChartModule[i];
if (module.select)
{
ClickModule(module);
m_LastSelectedModuleIndex = i;
break;
}
}
}
void ClickModule(ChartModule selectedModule)
{
foreach (var module in m_ChartModule)
{
if (selectedModule != module)
{
var block = module.button.colors;
block.highlightedColor = m_ButtonHighlightColor;
block.normalColor = m_ButtonNormalColor;
module.button.colors = block;
module.panel.SetActive(false);
module.select = false;
}
else
{
var block = module.button.colors;
block.highlightedColor = m_ButtonSelectedColor;
block.normalColor = m_ButtonSelectedColor;
module.button.colors = block;
module.panel.SetActive(true);
module.select = true;
}
}
m_ScrollRect.content = selectedModule.panel.GetComponent<RectTransform>();
m_Title.text = string.IsNullOrEmpty(selectedModule.title) ?
selectedModule.name : selectedModule.title;
}
void InitThemeButton()
{
m_DefaultThemeButton = transform.Find("chart_theme/btn_default").GetComponent<Button>();
m_LightThemeButton = transform.Find("chart_theme/btn_light").GetComponent<Button>();
m_DarkThemeButton = transform.Find("chart_theme/btn_dark").GetComponent<Button>();
m_DefaultThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Default);
m_LightThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Light);
m_DarkThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Dark);
m_DefaultThemeButton.onClick.AddListener(delegate () { SelecteTheme(Theme.Default); });
m_LightThemeButton.onClick.AddListener(delegate () { SelecteTheme(Theme.Light); });
m_DarkThemeButton.onClick.AddListener(delegate () { SelecteTheme(Theme.Dark); });
//SelecteTheme(Theme.Default);
}
void SelecteTheme(Theme theme)
{
m_SelectedTheme = theme;
m_DefaultThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Default);
m_LightThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Light);
m_DarkThemeButton.transform.Find("selected").gameObject.SetActive(m_SelectedTheme == Theme.Dark);
var charts = transform.GetComponentsInChildren<BaseChart>();
foreach (var chart in charts)
{
chart.UpdateTheme(theme);
}
}
}

View File

@@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: f2cb45775d5ecfa4488a53912a49a832
timeCreated: 1555862356
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,39 +0,0 @@
using UnityEngine;
using XCharts;
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo10_LineSimple : MonoBehaviour
{
void Awake()
{
var chart = gameObject.GetComponent<LineChart>();
if (chart == null) return;
chart.title.show = true;
chart.title.text = "Line Simple";
chart.tooltip.show = true;
chart.legend.show = false;
chart.xAxises[0].show = true;
chart.xAxises[1].show = false;
chart.yAxises[0].show = true;
chart.yAxises[1].show = false;
chart.xAxises[0].type = Axis.AxisType.Category;
chart.yAxises[0].type = Axis.AxisType.Value;
int dataCount = 10;
chart.xAxises[0].splitNumber = dataCount;
chart.xAxises[0].boundaryGap = true;
chart.RemoveData();
chart.AddSerie("test", SerieType.Line);
for (int i = 0; i < dataCount; i++)
{
chart.AddXAxisData("x" + i);
chart.AddData(0, Random.Range(10, 20));
}
}
}

View File

@@ -1,61 +0,0 @@
using UnityEngine;
using XCharts;
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo11_AddSinCurve : MonoBehaviour
{
private float time;
public int angle;
private LineChart chart;
void Awake()
{
chart = gameObject.GetComponent<LineChart>();
if (chart != null)
{
GameObject.DestroyImmediate(chart);
}
chart = gameObject.AddComponent<LineChart>();
chart.title.show = true;
chart.title.text = "Sin Curve";
chart.tooltip.show = true;
chart.legend.show = false;
chart.xAxises[0].show = true;
chart.xAxises[1].show = false;
chart.yAxises[0].show = true;
chart.yAxises[1].show = false;
chart.xAxises[0].type = Axis.AxisType.Value;
chart.yAxises[0].type = Axis.AxisType.Value;
chart.xAxises[0].boundaryGap = false;
chart.maxCacheDataNumber = 0;
chart.line.step = false;
chart.line.smooth = false;
chart.line.area = false;
chart.RemoveData();
var serie = chart.AddSerie("test", SerieType.Line);
serie.symbol.type = SerieSymbolType.None;
for (angle = 0; angle < 1080; angle++)
{
float xvalue = Mathf.PI / 180 * angle;
float yvalue = Mathf.Sin(xvalue);
chart.AddData(0, xvalue, yvalue);
}
}
void Update()
{
if(angle > 3000) return;
angle++;
float xvalue = Mathf.PI / 180 * angle;
float yvalue = Mathf.Sin(xvalue);
chart.AddData(0, xvalue, yvalue);
}
}

View File

@@ -1,29 +0,0 @@
using System.Collections.Generic;
using UnityEngine;
using XCharts;
[DisallowMultipleComponent]
[ExecuteInEditMode]
public class Demo50_Scatter : MonoBehaviour
{
private ScatterChart chart;
void Awake()
{
chart = gameObject.GetComponent<ScatterChart>();
if (chart == null) return;
chart.series.SetSerieSymbolSizeCallback(SymbolSize,SymbolSelectedSize);
}
float SymbolSize(List<float> data)
{
//return Mathf.Clamp(data[1] * 10,1,100);
return (float)(Mathf.Sqrt(data[2]) / 6e2);
}
float SymbolSelectedSize(List<float> data)
{
//return Mathf.Clamp(data[1] * 10,1,100);
return (float)(Mathf.Sqrt(data[2]) / 5e2);
}
}

View File

@@ -1,61 +0,0 @@
using System;
using UnityEngine;
using XCharts;
[DisallowMultipleComponent]
[ExecuteInEditMode]
[RequireComponent(typeof(CoordinateChart))]
public class Demo_Dynamic : MonoBehaviour
{
public int maxCacheDataNumber = 100;
public float initDataTime = 2;
private CoordinateChart chart;
private float updateTime;
private float initTime;
private int initCount;
private int count;
private bool isInited;
private DateTime timeNow;
void Awake()
{
chart = gameObject.GetComponentInChildren<CoordinateChart>();
chart.RemoveData();
var serie = chart.AddSerie("data", SerieType.Line);
serie.symbol.type = SerieSymbolType.None;
chart.maxCacheDataNumber = maxCacheDataNumber;
timeNow = DateTime.Now;
timeNow = timeNow.AddSeconds(-maxCacheDataNumber);
}
void Update()
{
if (initCount < maxCacheDataNumber)
{
int count = (int)(maxCacheDataNumber / initDataTime * Time.deltaTime);
for (int i = 0; i < count; i++)
{
timeNow = timeNow.AddSeconds(1);
string category = timeNow.ToString("hh:mm:ss");
float value = UnityEngine.Random.Range(60, 150);
chart.AddXAxisData(category);
chart.AddData(0, value);
initCount++;
if (initCount > maxCacheDataNumber) break;
}
chart.RefreshChart();
}
updateTime += Time.deltaTime;
if (updateTime >= 1)
{
updateTime = 0;
count++;
string category = DateTime.Now.ToString("hh:mm:ss");
float value = UnityEngine.Random.Range(60, 150);
chart.AddXAxisData(category);
chart.AddData(0, value);
chart.RefreshChart();
}
}
}

View File

@@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: 1c3d5e10d25691247b392b09eec051bf
timeCreated: 1557485360
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,42 +0,0 @@
using UnityEngine;
using XCharts;
[DisallowMultipleComponent]
[ExecuteInEditMode]
[RequireComponent(typeof(CoordinateChart))]
public class Demo_LargeData : MonoBehaviour
{
public int maxCacheDataNumber = 3000;
public float initDataTime = 5;
private CoordinateChart chart;
private float initTime;
private int initCount = 0;
private System.DateTime timeNow;
void Awake()
{
chart = gameObject.GetComponentInChildren<CoordinateChart>();
timeNow = System.DateTime.Now;
chart.ClearAxisData();
chart.series.ClearData();
chart.maxCacheDataNumber = maxCacheDataNumber;
timeNow = timeNow.AddSeconds(-maxCacheDataNumber);
}
void Update()
{
if (initCount < maxCacheDataNumber)
{
int count = (int)(maxCacheDataNumber / initDataTime * Time.deltaTime);
for (int i = 0; i < count; i++)
{
timeNow = timeNow.AddSeconds(1);
chart.AddXAxisData(timeNow.ToString("hh:mm:ss"));
chart.AddData(0, UnityEngine.Random.Range(60, 150));
initCount++;
if (initCount > maxCacheDataNumber) break;
}
}
}
}

View File

@@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: 0b7f7cfd79a632a46bdc2aac41160f37
timeCreated: 1557485007
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,37 +0,0 @@
using UnityEngine;
using XCharts;
[DisallowMultipleComponent]
[ExecuteInEditMode]
[RequireComponent(typeof(PieChart))]
public class Demo_PieChart : MonoBehaviour
{
private PieChart chart;
private float time;
private int count = 0;
private void Awake()
{
chart = transform.GetComponent<PieChart>();
chart.ClearData();
}
private void Update()
{
time += Time.deltaTime;
if (time > 1)
{
time = 0;
if (count < 5)
{
chart.AddData(0, Random.Range(10, 100), "time" + count);
}
else
{
int index = count % 5;
chart.UpdateData(0, Random.Range(10, 100),index);
}
count++;
}
}
}

View File

@@ -1,13 +0,0 @@
fileFormatVersion: 2
guid: 1f0aafe148c9e4f4dbf24fc6542722fa
timeCreated: 1557832345
licenseType: Free
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,6 @@
fileFormatVersion: 2
guid: dd29cbce72290724b8772e66460b2a1d
guid: 0793c29ff7adb422fb93f9f4e29d5a06
folderAsset: yes
timeCreated: 1536101222
licenseType: Free
DefaultImporter:
externalObjects: {}
userData:

View File

@@ -0,0 +1,114 @@
# XCharts API
[返回首页](https://github.com/monitor1394/unity-ugui-XCharts)
[XCharts配置项手册](XCharts配置项手册.md)
[XCharts问答](XCharts问答.md)
## `BaseChart`
---
* `BaseChart.themeInfo`:主题组件`ThemeInfo`
* `BaseChart.title`:标题组件`Title`
* `BaseChart.legend`:图例组件`Legend`
* `BaseChart.tooltip`:提示框组件`Tooltip`
* `BaseChart.series`:系列列表`Series`
* `BaseChart.chartWidth`:图表的宽。
* `BaseChart.chartHeight`:图表的高。
* `BaseChart.customDrawCallback`:自定义绘制回调函数。
* `BaseChart.SetSize(float width, float height)`:设置图表的大小。
* `BaseChart.ClearData()`:清除所有数据,系列列表会保留,只是移除列表中系列的数据。
* `BaseChart.RemoveData()`:清除所有系列和图例数据,系列列表也会被清除。
* `BaseChart.RemoveData(string serieName)`:清除指定系列名称的数据。
* `BaseChart.AddSerie(SerieType type, string serieName = null, bool show = true)`:添加一个系列到系列列表中。
* `BaseChart.AddData(string serieName, float data, string dataName = null)`:添加一个数据到指定的系列中。
* `BaseChart.AddData(int serieIndex, float data, string dataName = null)`:添加一个数据到指定的系列中。
* `BaseChart.AddData(string serieName, List<float> multidimensionalData, string dataName = null)`:添加多维数据`x,y,z...`到指定的系列中。
* `BaseChart.AddData(int serieIndex, List<float> multidimensionalData, string dataName = null)`:添加多维数据`x,y,z...`到指定的系列中。
* `BaseChart.AddData(string serieName, float xValue, float yValue, string dataName)`:添加`x,y`数据到指定系列中。
* `BaseChart.AddData(int serieIndex, float xValue, float yValue, string dataName = null)`:添加`x,y`数据到指定系列中。
* `BaseChart.UpdateData(string serieName,int dataIndex, float value)`:更新指定系列中的指定索引数据。
* `BaseChart.UpdateData(int serieIndex,int dataIndex, float value)`:更新指定系列中的指定索引数据。
* `BaseChart.UpdateDataName(string serieName,int dataIndex, string dataName)`:更新指定系列中的指定索引数据名称。
* `BaseChart.UpdateDataName(int serieIndex, int dataIndex, string dataName)`:更新指定系列中的指定索引数据名称。
* `BaseChart.SetActive(string serieName, bool active)`:设置指定系列是否显示。
* `BaseChart.SetActive(int serieIndex, bool active)`:设置指定系列是否显示。
* `BaseChart.IsActive(string serieName)`:获取指定系列是否显示。
* `BaseChart.IsActive(int serieIndex)`:获取指定系列是否显示。
* `BaseChart.IsActiveByLegend(string legendName)`:获得指定图例名字的系列是否显示。
* `BaseChart.RefreshChart()`:在下一帧刷新图表。
* `BaseChart.RefreshLabel()`:在下一帧刷新文本标签。
* `BaseChart.UpdateTheme(Theme theme)`:切换图表主题。
* `BaseChart.AnimationEnable(bool flag)`:启用或关闭起始动画。
* `BaseChart.AnimationStart()`:开始初始动画。
* `BaseChart.AnimationStop()`:停止初始化动画。
* `BaseChart.AnimationReset()`:重置初始动画,重新播放。
* `BaseChart.ClickLegendButton(int legendIndex, string legendName, bool show)`:点击图例按钮。
## `CoordinateChart`
---
* `CoordinateChart.grid`:网格组件 `Grid`
* `CoordinateChart.xAxises`:左右两个 `X` 轴组件 `XAxis`
* `CoordinateChart.yAxises`:左右两个 `Y` 轴组件 `YAxis`
* `CoordianteChart.xAxis0`X轴
* `CoordianteChart.xAxis1`X轴
* `CoordianteChart.xAxis0`Y轴
* `CoordianteChart.yAxis1`Y轴
* `CoordinateChart.dataZoom`:区域缩放组件 `DataZoom`
* `CoordinateChart.coordinateX`:坐标系的左下角坐标 `X`
* `CoordinateChart.coordinateY`:坐标系的左下角坐标 `Y`
* `CoordinateChart.coordinateWidth`:坐标系的宽。
* `CoordinateChart.coordinateHeight`:坐标系的高。
* `CoordinateChart.ClearAxisData()`清除所有x轴和y轴的类目数据。
* `CoordinateChart.AddXAxisData(string category, int xAxisIndex = 0)`:添加一个类目数据到指定的 `X` 轴。
* `CoordinateChart.AddYAxisData(string category, int yAxisIndex = 0)`:添加一个类目数据到指定的 `Y` 轴。
* `CoordinateChart.IsValue()`:是否是纯数值坐标。
* `CoordinateChart.RefreshDataZoom()`在下一帧刷新DataZoom组件。
* `CoordinateChart.RefreshAxisMinMaxValue()`:立即刷新数值坐标轴的最大最小值(更新坐标轴标签并触发重绘)。
## `LineChart`
---
* 继承 `BaseChart`
* 继承自 `CoordinateChart`
## `BarChart`
---
* 继承自 `BaseChart`
* 继承自 `CoordinateChart`
## `PieChart`
---
* 继承自 `BaseChart`
## `RadarChart`
---
* 继承自 `BaseChart`
* `radars`:雷达组件列表 `Radar`
## `ScatterChart`
---
* 继承自 `BaseChart`
* 继承自 `CoordinateChart`
## `HeatmapChart`
---
* 继承自 `BaseChart`
* 继承自 `CoordinateChart`
[返回首页](https://github.com/monitor1394/unity-ugui-XCharts)
[XCharts配置项手册](XCharts配置项手册.md)
[XCharts问答](XCharts问答.md)

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 81071e0166b9e49958800af4678e69ae
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,624 @@
# 配置项手册
[返回首页](https://github.com/monitor1394/unity-ugui-XCharts)
[XChartsAPI接口](XChartsAPI.md)
[XCharts问答](XCharts问答.md)
主组件:
* [Axis 坐标轴](#XAxis)
* [DataZoom 区域缩放](#DataZoom)
* [Grid 网格](#Grid)
* [Legend 图例](#Legend)
* [Series 系列](#Series)
* [Settings 设置](#Settings)
* [Theme 主题](#Theme)
* [Tooltip 提示框](#Tooltip)
* [Title 标题](#Title)
* [VisualMap 视觉映射](#VisualMap)
子组件:
* [AreaStyle 区域填充样式](#AreaStyle)
* [AxisLabel 坐标轴刻度标签](#AxisLabel)
* [AxisLine 坐标轴轴线](#AxisLine)
* [AxisName 坐标轴名称](#AxisName)
* [AxisSplitArea 坐标轴分割区域](#AxisSplitArea)
* [AxisTick 坐标轴刻度](#AxisTick)
* [Emphasis 高亮样式](#Emphasis)
* [ItemStyle 图形样式](#ItemStyle)
* [LineArrow 折线图箭头](#LineArrow)
* [LineStyle 折线图样式](#LineStyle)
* [Location 位置](#Location)
* [SerieAnimation 动画](#SerieAnimation)
* [SerieData 数据项](#SerieData)
* [SerieLabel 图形上的文本标签](#SerieLabel)
* [SerieSymbol 图形标记](#SerieSymbol)
## `Theme`
---
主题组件。主题用来配置图表的全局配色等其他参数。
相关参数:
* `theme`:内置主题类型。有`Default``Light``Dark`三种可选内置主题。
* `font`:所有文字的通用字体。
* `backgroundColor`:图表背景颜色。
* `titleTextColor`:主题的主标题文字颜色。
* `titleSubTextColor`:主题的副标题文字颜色。
* `legendTextColor`:图例的激活时文字颜色。
* `legendUnableColor`:图例的非激活时文字颜色。
* `axisTextColor`:坐标轴的文字颜色。
* `axisLineColor`:坐标轴的轴线颜色。
* `axisSplitLineColor`:坐标轴的分割线颜色,默认和轴线颜色一致。
* `tooltipBackgroundColor`:提示框的背景颜色。
* `tooltipFlagAreaColor`:提示框的阴影指示器的颜色。
* `tooltipTextColor`:提示框的文字颜色。
* `tooltipLabelColor`:提示框的十字指示器坐标轴标签的背景颜色。
* `tooltipLineColor`:提示框的指示线的颜色。
* `dataZoomTextColor`:区域缩放的文字颜色。
* `dataZoomLineColor`:区域缩放的线条颜色。
* `dataZoomSelectedColor`:区域缩放的选中区域颜色。
* `colorPalette`:调色盘颜色列表。如果系列没有设置颜色,则会依次循环从该列表中取颜色作为系列颜色。
相关接口:
* `GetColor(int index)`:获得调色盘对应系列索引的颜色值。
* `GetColorStr(int index)`:获得指定系列索引的十六进制颜色值字符串。
* `GetColor(string hexColorStr)`将字符串颜色值转成Color。
## `Title`
---
标题组件,包含主标题和副标题。
相关参数:
* `show`:是否显示标题组件。
* `text`:主标题文本,支持使用 `\n` 换行。
* `textFontSize`:主标题文字的字体大小。
* `subText`:副标题文本,支持使用 `\n` 换行。
* `subTextFontSize`:副标题文字的字体大小。
* `itemGap`:主副标题之间的间距。
* `location`:标题显示位置 [Location](#Location)。
## `Legend`
---
图例组件。图例组件展现了不同系列的标记,颜色和名字。可以通过点击图例控制哪些系列不显示。
相关参数:
* `show`:是否显示图例组件。
* `selectedMode`:选择模式。控制是否可以通过点击图例改变系列的显示状态。默认开启图例选择,可以设成 `None` 关闭。有以下三种选择方式:
* `Multiple`:多选。
* `Single`:单选。
* `None`:无法选择。
* `orient`:布局方式是横还是竖。
* `Horizonal`:水平。
* `Vertical`:垂直。
* `location`:图例的显示位置 [Location](#Location)。
* `itemWidth`:每个图例项的宽度。
* `itemHeight`:每个图例项的高度。
* `itemGap`:图例每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。
* `itemFontSize`:图例项的字体大小。
* `formatter`:图例内容字符串模版格式器。支持用 `\n` 换行。模板变量为图例名称 `{name}`
* `data`:图例的数据数组。数组项通常为一个字符串,每一项代表一个系列的 `name`(如果是饼图,也可以是饼图单个数据的 `name`)。如果 `data` 没有被指定,会自动从当前系列中获取。指定 `data` 时里面的数据项和 `serie` 匹配时才会生效。
相关接口:
* `ClearData()`:清空数据。
* `ContainsData(string name)`:是否包括指定名字的图例。
* `RemoveData(string name)`:移除指定名字的图例。
* `AddData(string name)`:添加图例项。
* `GetData(int index)`:获得指定索引的图例。
* `GetIndex(string legendName)`:获得指定图例的索引。
## `Tooltip`
---
提示框组件。
相关参数:
* `show`:是否显示提示框组件。
* `type`:提示框指示器类型。指示器类型有:
* `Line`:线性指示器。
* `Shadow`:阴影指示器。
* `None`:无指示器。
* `Corss`十字准星指示器。坐标轴显示Label和交叉线。
* `formatter`:提示框内容字符串模版格式器。支持用 `\n``<br/>` 换行。其中变量 `{a}`, `{b}`, `{c}`, `{d}` 在不同图表类型下代表数据含义为:
* 折线区域图、柱状条形图、K线图 : `{a}`(系列名称),`{b}`(类目值),`{c}`(数值), `{d}`(无)。
* 散点图(气泡)图 : `{a}`(系列名称),`{b}`(数据名称),`{c}`(数值数组), `{d}`(无)。
* 地图 : `{a}`(系列名称),`{b}`(区域名称),`{c}`(合并数值), `{d}`(无)。
* 饼图、仪表盘、漏斗图: `{a}`(系列名称),`{b}`(数据项名称),`{c}`(数值), `{d}`(百分比)。
* `fixedWidth`:固定宽度。当同时设置 `fixedWidth``minWidth` 时,`fixedWidth``minWidth` 优先级高。
* `fixedHeight`:固定高度。当同时设置 `fixedHeight``minHeight` 时,`fixedHeight``minHeight` 优先级高。
* `minWidth`:最小宽度。当同时设置 `fixedWidth``minWidth` 时,`fixedWidth``minWidth` 优先级高。
* `minHeight`:最小高度。当同时设置 f`ixedHeight``minHeight` 时,`fixedHeight``minHeight` 优先级高。
* `fontSize`:文字的字体大小。
* `fontStyle`:文字的字体风格。
* `forceENotation`是否强制使用科学计数法格式化显示数值。默认为false当小数精度大于3时才采用科学计数法。
## `DataZoom`
---
区域缩放组件。用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。
目前只支持控制 `X` 轴。
相关参数:
* `enable`:开启或关闭缩放区域功能。
* `supportInside`:是否支持内置缩放。内置于坐标系中,可在坐标系上通过鼠标拖拽、鼠标滚轮、手指滑动(触屏上)来缩放或漫游坐标系。
* `supportSlider`:是否支持滑动条缩放。有单独的滑动条,可在滑动条上进行缩放或漫游。
* ~~`filterMode`:数据过滤,暂未启用。支持以下几种类型:~~
* ~~`Filter`:当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只要有一个维度在数据窗口外,整个数据项就会被过滤掉。~~
* ~~`WeakFilter`:当前数据窗口外的数据,被 过滤掉。即 会 影响其他轴的数据范围。每个数据项,只有当全部维度都在数据窗口同侧外部,整个数据项才会被过滤掉。~~
* ~~`Empty`:当前数据窗口外的数据,被 设置为空。即 不会 影响其他轴的数据范围。~~
* ~~`None`:不过滤数据,只改变数轴范围。~~
* ~~`xAxisIndex`:控制哪一个 `x` 轴。~~
* ~~`yAxisIndex`:控制哪一个 `y` 轴。~~
* `showDataShadow`:是否显示数据阴影。数据阴影可以简单地反应数据走势。
* `showDetail`:是否显示 `detail`,即拖拽时候显示详细数值信息。
* `zoomLock`:是否锁定选择区域(或叫做数据窗口)的大小。如果设置为 `true` 则锁定选择区域的大小,也就是说,只能平移,不能缩放。
* ~~`realtime`:拖动时,是否实时更新系列的视图。如果设置为 `false`,则只在拖拽结束的时候更新。~~
* ~~`backgroundColor`:组件的背景颜色。~~
* `bottom`:组件离容器下侧的距离。
* `height`:组件高度。
* `rangeMode`:取值类型是取绝对值还是百分比。
* `Percent`:百分比。
* `start`数据窗口范围的起始百分比。范围是0 ~ 100。
* `end`数据窗口范围的结束百分比。范围是0 ~ 100。
* `scrollSensitivity`:缩放区域组件的敏感度。值越高每次缩放所代表的数据越多。
* `fontSize`:字体大小。
* `fontStyle`:字体样式。
## `VisualMap`
---
视觉映射组件。用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)。
* `enable`:开启或关闭视觉映射功能。
* `show`:是否显示组件。如果设置为 false不会显示但是数据映射的功能还存在。
* `type`:组件类型。支持以下类型:
* `Continuous`:连续型。
* ~~`Piecewise`:分段型。~~
* ~~`selectedMode`:分段型的选择模式,支持以下模式:~~
* ~~`Multiple`:多选。~~
* ~~`Single`:单选。~~
* `min`:允许的最小值。'min' 必须用户指定。[visualMap.min, visualMap.max] 形成了视觉映射的『定义域』。
* `max`:允许的最大值。'max' 必须用户指定。[visualMap.min, visualMax.max] 形成了视觉映射的『定义域』。
* `range`指定手柄对应数值的位置。range 应在 min max 范围内。
* ~~`text`:两端的文本,如 ['High', 'Low']。~~
* ~~`textGap`两端文字主体之间的距离单位为px。~~
* `splitNumber`对于连续型数据自动平均切分成几段默认为0时自动匹配inRange颜色列表大小。
* `calculable`:是否显示拖拽用的手柄(手柄能拖拽调整选中范围)。
* ~~`realtime`:拖拽时,是否实时更新。~~
* `itemWidth`:图形的宽度,即颜色条的宽度。
* `itemHeight`:图形的高度,即颜色条的高度。
* `borderWidth`边框线宽单位px。
* `dimension`:指定用数据的『哪个维度』,映射到视觉元素上。『数据』即 series.data。从1开始默认为0取 data 中最后一个维度。
* `hoverLink`:打开 hoverLink 功能时,鼠标悬浮到 visualMap 组件上时,鼠标位置对应的数值 在 图表中对应的图形元素,会高亮。
* `orient`:布局方式是横还是竖。
* `location`:组件显示在图表中的位置。
* `inRange`:定义 在选中范围中 的视觉颜色。
* ~~`outOfRange`:定义 在选中范围外 的视觉颜色。~~
## `Grid`
---
网格组件。直角坐标系内绘图网格,单个 `grid` 内最多可以放置上下两个 `X` 轴,左右两个 `Y` 轴。可以在网格上绘制折线图,柱状图,散点图(气泡图)。目前最多只能存在一个 `grid` 组件。
相关参数:
* `show`:是否显示直角坐标系网格组件。
* `left`:组件离容器左侧的距离。
* `right`:组件离容器右侧的距离。
* `top`:组件离容器顶部的距离。
* `bottom`:组件离容器底部的距离。
* `backgroundColor`:背景颜色。
## `XAxis`
---
直角坐标系 `grid` 中的 `X` 轴。单个 `grid` 组件最多只能放上下两个 `X` 轴。两个 `X` 轴存储在 `xAxises` 中。
相关参数:
* `show`:是否显示 `X` 轴。默认 `xAxises[0]``true``xAxises[1]``false`
* `type`:坐标轴类型。默认为 `Category`。有以下两种类型:
* `Value`:数值轴,用于连续数据。
* `Category`:类目轴,适用于离散的类目数据,为该类型时必须通过 `data` 设置类目数据。
* `minMaxType`:坐标轴刻度最大最小值显示类型。默认为 `Default`。有以下三种类型:
* `Default`0-最大值。
* `MinMax`:最小值-最大值。
* `Custom`:自定义的最小值-最大值。
* `min`:设定的坐标轴刻度最小值,当 `minMaxType``Custom` 时有效。
* `max`:设定的坐标轴刻度最大值,当 `minMaxType``Custom` 时有效。
* `splitNumber`:坐标轴的分割段数。默认为 `5`。当 `splitNumber` 设为 `0` 时,表示绘制所有的类目数据。
* `interval`:强制设置坐标轴分割间隔。无法在类目轴中使用。设置改值时 `splitNumber` 无效。
* `splitLineType`:分割线类型。默认为 `Dashed`。有以下五种类型:
* `None`:不显示分割线。
* `Solid`:实线。
* `Dashed`:虚线。
* `Dotted`:点线。
* `DashDot`:点划线。
* `DashDotDot`:双点划线。
* `boundaryGap`:坐标轴两边是否留白。默认为 `true`
* `maxCache`类目数据中可缓存的最大数据量。默认为0没有限制大于0时超过指定值会移除旧数据再插入新数据。
* `data`:类目数据,在类目轴(`type: 'Category'`)中有效。
* `axisLine`:坐标轴轴线相关配置 [AxisLine](#AxisLine)。
* `axisName`:坐标轴名称相关配置 [AxisName](#AxisName)。
* `axisTick`:坐标轴刻度相关配置 [AxisTick](#AxisTick)。
* `axisLabel`:坐标轴刻度标签 [AxisLabel](#AxisLabel)。
* `splitArea`:坐标轴轴线坐标轴分割区域 [SplitArea](#SplitArea)。
相关接口:
* `ClearData()`:清空类目数据。
* `IsCategory()`:是否为类目轴。
* `IsValue()`:是否为数值轴。
* `AddData(string category, int maxDataNumber)`:添加一个类目到类目数据列表。
## `YAxis`
---
直角坐标系 `grid` 中的 `Y` 轴。单个 `grid` 组件最多只能放左右两个 `Y` 轴。两个 `Y` 轴存储在 `yAxises` 中。
相关参数:
* `show`:是否显示 `Y` 轴。默认 `yAxises[0]``true``yAxises[1]``false`
* `type`:坐标轴类型。默认为 `Value`。有以下两种类型:
* `Value`:数值轴,用于连续数据。
* `Category`:类目轴,适用于离散的类目数据,为该类型时必须通过 `data` 设置类目数据。
* `minMaxType`:坐标轴刻度最大最小值显示类型。默认为 `Default`。有以下三种类型:
* `Default`0-最大值。
* `MinMax`:最小值-最大值。
* `Custom`:自定义的最小值-最大值。
* `min`:设定的坐标轴刻度最小值,当 `minMaxType``Custom` 时有效。
* `max`:设定的坐标轴刻度最大值,当 `minMaxType``Custom` 时有效。
* `splitNumber`:坐标轴的分割段数。默认为 `5`
* `interval`:强制设置坐标轴分割间隔。无法在类目轴中使用。设置改值时 `splitNumber` 无效。
* `splitLineType`:分割线类型。默认为 `Dashed`。支持以下五种类型:
* `None`:不显示分割线。
* `Solid`:实线。
* `Dashed`:虚线。
* `Dotted`:点线。
* `DashDot`:点划线。
* `DashDotDot`:双点划线。
* `boundaryGap`:坐标轴两边是否留白。默认为 `false`
* `data`:类目数据,在类目轴(`type: 'Category'`)中有效。
* `axisLine`:坐标轴轴线相关配置 [AxisLine](#AxisLine)。
* `axisName`:坐标轴名称相关配置 [AxisName](#AxisName)。
* `axisTick`:坐标轴刻度相关配置 [AxisTick](#AxisTick)。
* `axisLabel`:坐标轴刻度标签 [AxisLabel](#AxisLabel)。
* `splitArea`:坐标轴轴线坐标轴分割区域 [SplitArea](#SplitArea)。
相关接口:
* `ClearData()`:清空类目数据。
* `IsCategory()`:是否为类目轴。
* `IsValue()`:是否为数值轴。
* `AddData(string category, int maxDataNumber)`:添加一个类目到类目数据列表。
## `Series`
---
系列列表。每个系列通过 type 决定自己的图表类型。
相关参数:
* `show`:系列是否显示在图表上。
* `type`:系列的图表类型。有以下几种类型:
* `Line`:折线图。
* `Bar`:柱状图。
* `Pie`:饼图。
* `Radar`:雷达图。
* `Scatter`:散点图。
* `EffectScatter`:带有涟漪特效动画的散点图。
* `name`:系列名称。用于 `tooltip` 的显示,`legend` 的图例筛选。
* `stack`:数据堆叠。同个类目轴上系列配置相同的 `stack` 值后,后一个系列的值会在前一个系列的值上相加。
* `axisIndex`:使用的坐标轴轴的 `index`,在单个图表实例中存在多个坐标轴轴的时候有用。
* `radarIndex`:雷达图所使用的 `radar` 组件的 `index`
* `minShow`:系列显示数据的最小索引。
* `maxShow`:系列显示数据的最大索引。
* `maxCache`:系列中可缓存的最大数据量。默认为`0`没有限制大于0时超过指定值会移除旧数据再插入新数据。
* `sampleDist`采样的最小水平像素距离,默认为`0`时不采样。当两个数据点间的水平像素距离小于该值时,开启采样,保证两点间的水平像素距离不小于该值。
* `sampleType`:采样类型。当`sampleDist`大于`0`时有效。支持以下五种采样类型:
* `Peak`:取峰值。当过滤点的平均值大于等于`sampleAverage`时,取最大值;反之取最小值。
* `Average`:取过滤点的平均值。
* `Max`:取过滤点的最大值。
* `Min`:取过滤点的最小值。
* `Sum`:取过滤点之和。
* `sampleAverage`:设定的采样平均值。当 `sampleType``Peak` 时,用于和过滤数据的平均值做对比是取最大值还是最小值。默认为`0`时会实时计算所有数据的平均值。
* `areaStyle`:区域填充样式 [AreaStyle](#AreaStyle)。
* `symbol`:标记的图形 [SerieSymbol](#SerieSymbol)。
* `lineType`:折线图样式类型。支持以下十种类型:
* `Normal`:普通折线图。
* `Smooth`:平滑曲线。
* `SmoothDash`:平滑虚线。
* `StepStart`:阶梯线图:当前点。
* `StepMiddle`:阶梯线图:当前点和下一个点的中间。
* `StepEnd`:阶梯线图:下一个拐点。
* `Dash`:虚线。
* `Dot`:点线。
* `DashDot`:点划线。
* `DashDotDot`:双点划线。
* `lineStyle`:线条样式 [LineStyle](#LineStyle)。
* `barType`:柱状图类型。以下几种类型:
* `Normal`:普通柱状图。
* `Zebra`:斑马柱状图。
* `Capsule`:胶囊柱状图。
* `barPercentStack`:是否百分比堆叠柱状图,相同 `stack``serie` 只要有一个 `barPercentStack``true`,则就显示成百分比堆叠柱状图。
* `barWidth`:柱条的宽度,不设时自适应。支持设置成相对于类目宽度的百分比。
* `barGap`:不同系列的柱间距离。为百分比(如 `'0.3f'`,表示柱子宽度的 `30%`)。如果想要两个系列的柱子重叠,可以设置 `barGap``'-1f'`。这在用柱子做背景的时候有用。在同一坐标系上,此属性会被多个 `'bar'` 系列共享。此属性应设置于此坐标系中最后一个 `'bar'` 系列上才会生效,并且是对此坐标系中所有 `'bar'` 系列生效。
* `barCategoryGap`同一系列的柱间距离默认为类目间距的20%,可设固定值。在同一坐标系上,此属性会被多个 `'bar'` 系列共享。此属性应设置于此坐标系中最后一个 `'bar'` 系列上才会生效,并且是对此坐标系中所有 `'bar'` 系列生效。
* `barZebraWidth`:斑马线的粗细。`barType``Zebra` 时有效。
* `barZebraGap`:斑马线的间距。`barType``Zebra` 时有效。
* `pieClickOffset`鼠标点击时是否开启偏移一般用在PieChart图表中。
* `pieRoseType`:是否展示成南丁格尔图,通过半径区分数据大小。
* `pieSpace`:饼图项间的空隙留白。
* `pieCenter`:饼图的中心点。
* `pieRadius`:饼图的半径。`radius[0]` 表示内径,`radius[1]` 表示外径。
* `label`:图形上的文本标签 [SerieLabel](#SerieLabel),可用于说明图形的一些数据信息,比如值,名称等。
* `emphasis`:高亮样式 [Emphasis](#Emphasis)。
* `animation`:起始动画 [SerieAnimation](#SerieAnimation)。
* `lineArrow`:折线图的箭头 [LineArrow](#LineArrow)。
* `data`:系列中的数据项 [SerieData](#SerieData) 数组,可以设置`1``n`维数据。
相关接口:
## `Settings`
---
全局参数设置组件。一般情况下可使用默认值,当有需要时可进行调整。
* `lineSmoothStyle`:曲线平滑系数。通过调整平滑系数可以改变曲线的曲率,得到外观稍微有变化的不同曲线。
* `lineSmoothness`:曲线平滑度。值越小曲线越平滑,但顶点数也会随之增加。当开启有渐变的区域填充时,数值越大渐变过渡效果越差。
* `lineSegmentDistance` 线段的分割距离。普通折线图的线是由很多线段组成,段数由该数值决定。值越小段数越多,但顶点数也会随之增加。当开启有渐变的区域填充时,数值越大渐变过渡效果越差。
* `cicleSmoothness`:圆形(包括扇形、环形等)的平滑度。数越小圆越平滑,但顶点数也会随之增加。
## `Animation`
---
* `enable`:是否开起始画效果。
* `easing`:动画的缓动效果。支持以下动画效果:
* `Linear`:线性效果。
* `duration`:设定的动画时长,单位毫秒。
* `threshold`:是否开启动画的阈值,当单个系列显示的图形数量大于这个阈值时会关闭动画。
* `delay`:动画延时,单位毫秒。
## `AreaStyle`
---
* `show`:是否显示区域填充。
* `origin`:区域填充的起始位置 `AreaOrigin`。有以下三种填充方式:
* `Auto`:填充坐标轴轴线到数据间的区域。
* `Start`:填充坐标轴底部到数据间的区域。
* `End`:填充坐标轴顶部到数据间的区域。
* `color`:区域填充的颜色,默认取 `serie` 对应的颜色。如果 `toColor` 不是默认值,则表示渐变色的起点颜色。
* `toColor`:区域填充的渐变色的终点颜色。
* `highlightColor`:高亮时区域填充的颜色,默认取 `serie` 对应的颜色。如果 `highlightToColor` 不是默认值,则表示渐变色的起点颜色。
* `highlightToColor`:高亮时区域填充的渐变色的终点颜色。
* `opacity`:图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
* `tooltipHighlight`:鼠标悬浮时是否高亮之前的区域。
## `AxisLabel`
---
* `show`:是否显示刻度标签。
* `interval`坐标轴刻度标签的显示间隔在类目轴中有效。0表示显示所有标签1表示隔一个隔显示一个标签以此类推。
* `inside`:刻度标签是否朝内,默认朝外。
* `rotate`:刻度标签旋转的角度,在类目轴的类目标签显示不下的时候可以通过旋转防止标签之间重叠。
* `margin`:刻度标签与轴线之间的距离。
* `color`刻度标签文字的颜色默认取主题Theme的axisTextColor。
* `fontSize`:文字的字体大小。
* `fontStyle`:文字字体的风格。
* `formatter`:图例内容字符串模版格式器。支持用 \n 换行。模板变量为图例名称 {value}{value:f1} 表示取1为小数
* `forceENotation`是否强制使用科学计数法格式化显示数值。默认为false当小数精度大于3时才采用科学计数法。
## `AxisLine`
---
* `show`:是否显示坐标轴轴线。
* `onZero`X 轴或者 Y 轴的轴线是否在另一个轴的 0 刻度上,只有在另一个轴为数值轴且包含 0 刻度时有效。
* `width`:坐标轴线线宽。
* `symbol`:是否显示箭头。
* `symbolWidth`:箭头宽。
* `symbolHeight`:箭头高。
* `symbolOffset`:箭头偏移。
* `symbolDent`:箭头的凹陷程度。
## `AxisName`
---
* `show`:是否显示坐标名称。
* `name`:坐标轴名称。
* `location`:坐标轴名称的位置。支持以下类型:
* `Start`:坐标轴起始处。
* `Middle`:坐标轴中间。
* `End`:坐标轴末端。
* `offset`:坐标轴名称与轴线之间的偏移。
* `rotate`:坐标轴名字旋转,角度值。
* `color`:坐标轴名称的文字颜色。
* `fontSize`:坐标轴名称的文字大小。
* `fontStyle`:坐标轴名称的文字风格。
## `AxisSplitArea`
---
* `show`:是否显示坐标分割区域。
* `color`:分隔区域颜色。分隔区域会按数组中颜色的顺序依次循环设置颜色。默认是一个深浅的间隔色。
## `AxisTick`
---
* `show`:是否显示坐标轴刻度。
* `alignWithLabel`:类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐。
* `inside`:坐标轴刻度是否朝内,默认朝外。
* `length`:坐标轴刻度的长度。
## `Emphasis`
---
* `show`:是否启用高亮样式。
* `label`:图形文本标签样式 [SerieLabel](#SerieLabel)。
* `itemStyle`:图形样式 [ItemStyle](#ItemStyle)。
## `ItemStyle`
---
* `show`:是否启用。
* `color`:颜色。
* `borderType`:边框的类型。
* `borderColor`:边框的颜色。
* `borderWidth`:边框宽。
* `borderWidth`opacity。
## `LineArrow`
---
* `show`:是否显示箭头。
* `position`:箭头显示位置。支持以下两种位置:
* `End`:末端显示。最后一个数据上显示箭头。
* `Start`:起始端显示。第一个数据上显示箭头。
* `width`:箭头宽。
* `height`:箭头长。
* `offset`:箭头偏移。默认箭头的中心点和数据坐标点一致,可通过 `offset` 调整偏移。
* `dent`:箭头的凹度。
## `LineStyle`
---
* `show`:是否显示线条。在折线图中无效。
* `type`:线条类型。支持以下五种类型:
* `None`:不显示分割线。
* `Solid`:实线。
* `Dashed`:虚线。
* `Dotted`:点线。
* `DashDot`:点划线。
* `DashDotDot`:双点划线。
* `color`:线条颜色。默认和 `serie` 一致。
* `width`:线条宽。
* `opacity`:线条的透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
## `Location`
---
* `align`:对齐方式。有以下对齐方式。
* `TopLeft`:左上角对齐。
* `TopRight`:右上角对齐。
* `TopCenter`:置顶居中对齐。
* `BottomLeft`:左下对齐。
* `BottomRight`:右下对齐。
* `BottomCenter`:底部居中对齐。
* `Center`:居中对齐。
* `CenterLeft`:中部靠左对齐。
* `CenterRight`:中部靠右对齐。
* `left`:离容器左侧的距离。
* `right`:离容器右侧的距离。
* `top`:离容器上侧的距离。
* `bottom`:离容器下侧的距离。
## `SerieData`
---
* `name`:数据项名称。
* `selected`:该数据项是否被选中。
* `radius`:自定义半径。可用在饼图中自定义某个数据项的半径。
* `showIcon`:是否显示图标。
* `iconImage`:图标的图片。
* `iconColor`:图标颜色。
* `iconWidth`:图标宽。
* `iconHeight`:图标高。
* `iconOffset`:图标偏移。
## `SerieLabel`
---
* `show`:是否显示文本标签。
* `position`:标签的位置。折线图时强制默认为 `Center`,支持以下 `5` 种位置:
* `Outside`:饼图扇区外侧,通过视觉引导线连到相应的扇区。只在饼图种可用。
* `Inside`:饼图扇区内部。只在饼图可用。
* `Center`:在中心位置(折线图,柱状图,饼图)。
* `Top`:顶部(柱状图)。
* `Bottom`:底部(柱状图)。
* `formatter`:标签内容字符串模版格式器。支持用 `\n` 换行。模板变量有:`{a}`:系列名;`{b}`:数据名;`{c}`:数据值;`{d}`:百分比。示例:`{b}:{c:f1}`
* `offset`:距离图形元素的偏移。
* `color`:自定义文字颜色,默认和系列的颜色一致。
* `backgroundColor`:标签的背景色,默认无颜色。
* `backgroundWidth`:标签的背景宽度。一般不用指定,不指定时则自动是文字的宽度。
* `backgroundHeight`:标签的背景高度。一般不用指定,不指定时则自动是文字的高度。
* `rotate`:标签的旋转。
* `paddingLeftRight`:标签文字和边框的左右边距。
* `paddingTopBottom`:标签文字和边框的上下边距。
* `fontSize`:标签文字的字体大小。
* `fontStyle`:标签文字的字体风格。
* `line`:是否显示视觉引导线。在 `label` 位置 设置为 `'Outside'` 的时候会显示视觉引导线。
* `lineType`:视觉引导线类型。支持以下几种类型:
* `BrokenLine`:折线。
* `Curves`:曲线。
* `HorizontalLine`:水平线。
* `lineColor`:视觉引导线自定义颜色。
* `lineWidth`:视觉引导线的宽度。
* `lineLength1`:视觉引导线第一段的长度。
* `lineLength2`:视觉引导线第二段的长度。
* `border`:是否显示边框。
* `borderWidth`:边框宽度。
* `borderColor`:边框颜色。
* `forceENotation`是否强制使用科学计数法格式化显示数值。默认为false当小数精度大于3时才采用科学计数法。
## `SerieSymbol`
---
* `type`:标记类型。支持以下六种类型:
* `EmptyCircle`:空心圆。
* `Circle`:实心圆。
* `Rect`:正方形。
* `Triangle`:三角形。
* `Diamond`:菱形。
* `None`:不显示标记。
* `sizeType`:标记图形的大小获取方式。支持以下三种类型:
* `Custom`:自定义大小。
* `FromData`:通过 `dataIndex` 从数据中获取,再乘以一个比例系数 `dataScale`
* `Callback`:通过回调函数 `sizeCallback` 获取。
* `size`:标记的大小。
* `selectedSize`:被选中的标记的大小。
* `dataIndex`:当 `sizeType` 指定为 `FromData` 时,指定的数据源索引。
* `dataScale`:当 `sizeType` 指定为 `FromData` 时,指定的倍数系数。
* `selectedDataScale`:当 `sizeType` 指定为 `FromData` 时,指定的高亮倍数系数。
* `sizeCallback`:当 `sizeType` 指定为 `Callback` 时,指定的回调函数。
* `selectedSizeCallback`:当 `sizeType` 指定为 `Callback` 时,指定的高亮回调函数。
* `color`:标记图形的颜色,默认和系列一致。
* `opacity`:图形标记的透明度。
* `startIndex`:开始显示图形标记的索引。
* `interval`显示图形标记的间隔。0表示显示所有标签1表示隔一个隔显示一个标签以此类推。
* `forceShowLast`:是否强制显示最后一个图形标记。默认为 `false`
[返回首页](https://github.com/monitor1394/unity-ugui-XCharts)
[XChartsAPI接口](XChartsAPI.md)
[XCharts问答](XCharts问答.md)

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f74b65f3be5d64689a5db6bdbc91df3e
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,125 @@
# XCharts问答
[返回首页](https://github.com/monitor1394/unity-ugui-XCharts)
[XChartsAPI接口](XChartsAPI.md)
[XCharts配置项手册](XCharts配置项手册.md)
[QA 1如何调整坐标轴与背景的边距](#如何调整坐标轴与背景的边距)
[QA 2如何让初始动画重新播放](#如何让初始动画重新播放)
[QA 3如何自定义折线图、饼图等数据项的颜色](#如何自定义折线图、饼图等数据项的颜色)
[QA 4如何格式化文字如我想给坐标轴标签加上单位](#如何格式化文字,如我想给坐标轴标签加上单位)
[QA 5如何让柱形图的柱子堆叠显示](#如何让柱形图的柱子堆叠显示)
[QA 6如何让柱形图的柱子同柱但不重叠](#如何让柱形图的柱子同柱但不重叠)
[QA 7如何调整柱形图的柱子宽度和间距](#如何调整柱形图的柱子宽度和间距)
[QA 8如何调整柱形图单个柱子的颜色](#如何调整柱形图单个柱子的颜色)
[QA 9如何调整图表的对齐方式](#如何调整图表的对齐方式)
[QA 10可以显示超过1000以上的大数据吗](#可以显示超过1000以上的大数据吗)
[QA 11折线图可以画虚线、点线、点划线吗](#折线图可以画虚线、点线、点划线吗)
[QA 12如何限定Y轴Value轴的值范围](#如何限定Y轴Value轴的值范围)
[QA 13如何自定义数值轴刻度大小](#如何自定义数值轴刻度大小)
[QA 14如何在数据项顶上显示文本](#如何在数据项顶上显示文本)
[QA 15如何给数据项自定义图标](#如何给数据项自定义图标)
[QA 16锯齿太严重如何让图表更顺滑](#锯齿太严重,如何让图表更顺滑)
[QA 17为什么鼠标移上图表Tooltip不显示](#为什么鼠标移上图表`Tooltip`不显示)
[QA 18如何取消Tooltip的竖线](#如何取消`Tooltip`的竖线)
[QA 19如何让Y轴数值轴显示多位小数](#如何让Y轴数值轴显示多位小数)
[QA 20如何用代码动态更新数据](#如何用代码动态更新数据)
[QA 21如何显示图例](#如何显示图例)
[QA 22如何做成预设](#如何做成预设)
[QA 23如何在图表上画点画线等自定义内容](#如何在图表上画点画线等自定义内容)
## 如何调整坐标轴与背景的边距
答:`Grid`组件,可调整上下左右边距。
## 如何让初始动画重新播放
答:调用`AnimationReset()`接口。
## 如何自定义折线图、饼图等数据项的颜色
答:通过`Theme``colorPalette`调整,或者部分`Serie`下的`LineStyle``ItemStyle`
## 如何格式化文字,如我想给坐标轴标签加上单位
答:通过`formatter`参数,在`Legend``Axis``AxisLabel``Tooltop``Serie``Label`都提供改参数的配置。
## 如何让柱形图的柱子堆叠显示
答:设置`Serie`下的`stack``stack`相同的`serie`会堆叠显示在一个柱子上。
## 如何让柱形图的柱子同柱但不重叠
答:设置`Serie`下的`barGap``-1``stack`为空。
## 如何调整柱形图的柱子宽度和间距
答:调整`Serie`下的`barWidth``barGap`,多个`serie`时最后一个`serie``barWidth``barGap`有效。
## 如何调整柱形图单个柱子的颜色
答:目前暂不支持调整单子柱子的颜色,但可以通过两个`serie`同柱不堆叠来实现,通过设置数据项为`0`来达到类似效果。
## 如何调整图表的对齐方式
默认为左下角对齐暂不支持调整。可以通过包一层parent来辅助控制。
## 可以显示超过1000以上的大数据吗
答:可以。但`UGUI`对单个`Graphic`限制`65000`个顶点,所以太多的数据不一定能显示完全。可通过设置采样距离`sampleDist`开启采样简化过密曲线。也可以通过设置一些参数来减少图表的顶点数有助于显示更多数据。如缩小图表的尺寸,关闭或减少坐标轴的客户端绘制,关闭`Serie``symbol``label`显示等。折线图的普通线图`Normal`比平滑线图`Smooth`占用顶点数更少。
## 折线图可以画虚线、点线、点划线吗
答:可以。通过`Serie`下的`lineType`选择线条样式。当要显示的数据过多(成千以上)数据间过密时建议使用`Normal`或者`Step`样式。
## 如何限定Y轴Value轴的值范围
答:设置`Axis`下的`minMaxType``Custom`,自定义`min``max`
## 如何自定义数值轴刻度大小
答:默认时通过`Axis`下的`splitNumer`进行自动划分。也可以设置`interval`自定义刻度大小。
## 如何在数据项顶上显示文本
答:通过设置`Serie`下的`Label`
## 如何给数据项自定义图标
答:通过设置`Serie``data`下的数据项可单独设置`icon`相关参数。
## 锯齿太严重,如何让图表更顺滑
开启抗锯齿设置。调整UI渲染模式为Camera模式开启MSAA设置4倍或更高抗锯齿。锯齿只能减少难以避免像素越高锯齿越不明显。
## 为什么鼠标移上图表`Tooltip`不显示
答:确认`Tooltip`是否开启。确认父节点是否关闭了鼠标事件。
## 如何取消`Tooltip`的竖线
答:设置`Tooltip``type``None`
## 如何让Y轴数值轴显示多位小数
答:设置`Axis`下的`AxisLabel`中的`formatter``{value:f1}``{value:f2}`
## 如何用代码动态更新数据
答:请查阅`Demo`下的代码,`Demo10_LineSimple.cs`就是一个简单添加数据构建折线图的例子,其他`Demo`也都是通过代码控制不同的组件实现不同的功能。
## 如何显示图例
答:首先,你的`serie`里的`name`需有值不为空。然后开启`Legend`显示,里面的`data`可以默认为空,表示显示所有的图例。如果你只想显示部分`serie`的图例,在`data`中填入要显示的图例即可。
## 如何做成预设
请删除chart下所有的子组件再拖成预设。
## 如何在图表上画点画线等自定义内容
xcharts有自定义绘制回调`customDrawCallback`,具体可参考`Demo12_CustomDrawing.cs`
[返回首页](https://github.com/monitor1394/unity-ugui-XCharts)
[XChartsAPI接口](XChartsAPI.md)
[XCharts配置项手册](XCharts配置项手册.md)

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9a4780a4fbaf446cc9d948b6b2c803d6
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,8 +1,6 @@
fileFormatVersion: 2
guid: 0ed45d2c9978fbf4aac0915d767f8853
guid: 98b750952a34c427693ac70f09008bae
folderAsset: yes
timeCreated: 1554216875
licenseType: Free
DefaultImporter:
externalObjects: {}
userData:

View File

@@ -1,4 +1,11 @@
using UnityEditor;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
namespace XCharts
{
@@ -9,13 +16,10 @@ namespace XCharts
[CustomEditor(typeof(BarChart), false)]
public class BarChartEditor : CoordinateChartEditor
{
protected SerializedProperty m_Bar;
protected override void OnEnable()
{
base.OnEnable();
m_Target = (BarChart)target;
m_Bar = serializedObject.FindProperty("m_Bar");
}
protected override void OnEndInspectorGUI()
@@ -25,7 +29,6 @@ namespace XCharts
{
return;
}
EditorGUILayout.PropertyField(m_Bar, true);
}
}
}

View File

@@ -1,5 +1,11 @@
using UnityEditor;
using UnityEngine;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
namespace XCharts
{
@@ -20,16 +26,12 @@ namespace XCharts
protected SerializedProperty m_Legend;
protected SerializedProperty m_Tooltip;
protected SerializedProperty m_Series;
protected SerializedProperty m_Settings;
protected SerializedProperty m_Large;
protected SerializedProperty m_MinShowDataNumber;
protected SerializedProperty m_MaxShowDataNumber;
protected SerializedProperty m_MaxCacheDataNumber;
protected float m_DefaultLabelWidth;
protected float m_DefaultFieldWidth;
private int m_SeriesSize;
private bool m_BaseModuleToggle = false;
protected virtual void OnEnable()
{
@@ -45,9 +47,7 @@ namespace XCharts
m_Series = serializedObject.FindProperty("m_Series");
m_Large = serializedObject.FindProperty("m_Large");
m_MinShowDataNumber = serializedObject.FindProperty("m_MinShowDataNumber");
m_MaxShowDataNumber = serializedObject.FindProperty("m_MaxShowDataNumber");
m_MaxCacheDataNumber = serializedObject.FindProperty("m_MaxCacheDataNumber");
m_Settings = serializedObject.FindProperty("m_Settings");
}
public override void OnInspectorGUI()
@@ -82,22 +82,7 @@ namespace XCharts
protected virtual void OnMiddleInspectorGUI()
{
EditorGUILayout.PropertyField(m_Series, true);
m_BaseModuleToggle = EditorGUILayout.Foldout(m_BaseModuleToggle,
new GUIContent("Base", "基础配置"),
ChartEditorHelper.foldoutStyle);
if (m_BaseModuleToggle)
{
EditorGUI.indentLevel++;
var largeTip = "Whether to enable the optimization of large-scale graph. \n是否启用大规模线图的优化在数据图形特别多的时候>=5k可以开启。";
EditorGUILayout.PropertyField(m_Large, new GUIContent("Large", largeTip));
EditorGUILayout.PropertyField(m_MinShowDataNumber, true);
EditorGUILayout.PropertyField(m_MaxShowDataNumber, true);
EditorGUILayout.PropertyField(m_MaxCacheDataNumber, true);
if (m_MinShowDataNumber.intValue < 0) m_MinShowDataNumber.intValue = 0;
if (m_MaxShowDataNumber.intValue < 0) m_MaxShowDataNumber.intValue = 0;
if (m_MaxCacheDataNumber.intValue < 0) m_MaxCacheDataNumber.intValue = 0;
EditorGUI.indentLevel--;
}
EditorGUILayout.PropertyField(m_Settings, true);
}
protected virtual void OnEndInspectorGUI()

View File

@@ -0,0 +1,79 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
using UnityEngine;
namespace XCharts
{
public class CheckVersionEditor : EditorWindow
{
private Vector2 scrollPos;
private static CheckVersionEditor window;
[MenuItem("Component/XCharts/Check For Update")]
private static void ShowWindow()
{
window = GetWindow<CheckVersionEditor>();
window.titleContent = new GUIContent("XCharts Check For Update");
window.minSize = new Vector2(550, window.minSize.y);
window.Show();
XChartsMgr.Instance.CheckVersion();
}
private void OnGUI()
{
var mgr = XChartsMgr.Instance;
GUILayout.Label("");
GUILayout.Label("当前版本:" + mgr.nowVersion);
if (mgr.needUpdate && !mgr.isCheck)
{
GUILayout.BeginHorizontal();
GUILayout.Label("最新版本:" + mgr.newVersion);
if (mgr.isCheck) GUILayout.Label("检测中...");
else GUILayout.Label("有更新!");
if (GUILayout.Button("去Github主页"))
{
Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts");
}
GUILayout.EndHorizontal();
GUILayout.Label("");
if (!string.IsNullOrEmpty(mgr.desc))
{
GUILayout.Label(mgr.desc);
GUILayout.Label("");
}
scrollPos = GUILayout.BeginScrollView(scrollPos);
GUILayout.TextArea(mgr.changeLog);
GUILayout.EndScrollView();
}
else
{
if (mgr.isCheck) GUILayout.Label("最新版本:检测中...");
else GUILayout.Label("最新版本:" + mgr.newVersion);
if (!mgr.needUpdate && !mgr.isCheck)
{
GUILayout.Label("");
GUILayout.Label("已是最新版本!");
GUILayout.Label("");
if (!string.IsNullOrEmpty(mgr.desc))
{
GUILayout.Label(mgr.desc);
GUILayout.Label("");
}
if (GUILayout.Button("去Github主页"))
{
Application.OpenURL(mgr.homepage);
}
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 98d1061c4167c4fff8ed25c3e8be8756
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,5 +1,11 @@
using UnityEditor;
using UnityEngine;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
namespace XCharts
{
@@ -16,6 +22,7 @@ namespace XCharts
protected SerializedProperty m_MultipleYAxis;
protected SerializedProperty m_YAxises;
protected SerializedProperty m_DataZoom;
protected SerializedProperty m_VisualMap;
protected override void OnEnable()
{
@@ -25,12 +32,14 @@ namespace XCharts
m_XAxises = serializedObject.FindProperty("m_XAxises");
m_YAxises = serializedObject.FindProperty("m_YAxises");
m_DataZoom = serializedObject.FindProperty("m_DataZoom");
m_VisualMap = serializedObject.FindProperty("m_VisualMap");
}
protected override void OnStartInspectorGUI()
{
base.OnStartInspectorGUI();
EditorGUILayout.PropertyField(m_DataZoom);
EditorGUILayout.PropertyField(m_VisualMap);
EditorGUILayout.PropertyField(m_Grid);
for (int i = 0; i < m_XAxises.arraySize; i++)
{

View File

@@ -0,0 +1,30 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
namespace XCharts
{
/// <summary>
/// Editor class used to edit UI HeatmapChart.
/// </summary>
[CustomEditor(typeof(HeatmapChart), false)]
public class HeatmapChartEditor : CoordinateChartEditor
{
protected override void OnEnable()
{
base.OnEnable();
m_Target = (HeatmapChart)target;
}
protected override void OnEndInspectorGUI()
{
base.OnEndInspectorGUI();
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1144057dfc00f4572913a63ba5291dd7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,4 +1,11 @@
using UnityEditor;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
namespace XCharts
{
@@ -9,19 +16,10 @@ namespace XCharts
[CustomEditor(typeof(LineChart), false)]
public class LineChartEditor : CoordinateChartEditor
{
protected SerializedProperty m_Line;
protected override void OnEnable()
{
base.OnEnable();
m_Target = (LineChart)target;
m_Line = serializedObject.FindProperty("m_Line");
}
protected override void OnEndInspectorGUI()
{
base.OnEndInspectorGUI();
EditorGUILayout.PropertyField(m_Line, true);
}
}
}

View File

@@ -1,4 +1,11 @@
using UnityEditor;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
namespace XCharts
{
@@ -15,13 +22,11 @@ namespace XCharts
{
base.OnEnable();
m_Target = (PieChart)target;
m_Pie = serializedObject.FindProperty("m_Pie");
}
protected override void OnEndInspectorGUI()
{
base.OnEndInspectorGUI();
EditorGUILayout.PropertyField(m_Pie, true);
}
}
}

View File

@@ -0,0 +1,67 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace XCharts
{
[CustomPropertyDrawer(typeof(SerieAnimation), true)]
public class AnimationDrawer : PropertyDrawer
{
private Dictionary<string, bool> m_AnimationModuleToggle = new Dictionary<string, bool>();
public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
{
Rect drawRect = pos;
drawRect.height = EditorGUIUtility.singleLineHeight;
SerializedProperty m_Enable = prop.FindPropertyRelative("m_Enable");
SerializedProperty m_Easting = prop.FindPropertyRelative("m_Easting");
SerializedProperty m_Duration = prop.FindPropertyRelative("m_Duration");
SerializedProperty m_Delay = prop.FindPropertyRelative("m_Delay");
SerializedProperty m_Threshold = prop.FindPropertyRelative("m_Threshold");
SerializedProperty m_ActualDuration = prop.FindPropertyRelative("m_ActualDuration");
SerializedProperty m_CurrDetailProgress = prop.FindPropertyRelative("m_CurrDetailProgress");
SerializedProperty m_DestDetailProgress = prop.FindPropertyRelative("m_DestDetailProgress");
ChartEditorHelper.MakeFoldout(ref drawRect, ref m_AnimationModuleToggle, prop, null, m_Enable, false);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
if (ChartEditorHelper.IsToggle(m_AnimationModuleToggle, prop))
{
++EditorGUI.indentLevel;
EditorGUI.PropertyField(drawRect, m_Easting);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Duration);
if (m_Duration.intValue < 0) m_Duration.intValue = 0;
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Delay);
if (m_Delay.intValue < 0) m_Delay.intValue = 0;
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Threshold);
if (m_Threshold.intValue < 0) m_Threshold.intValue = 0;
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.LabelField(drawRect, "CurrDetailProgress:" + m_CurrDetailProgress.floatValue);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.LabelField(drawRect, "DestDetailProgress:" + m_DestDetailProgress.floatValue);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.LabelField(drawRect, "Actual duration:" + m_ActualDuration.intValue + " ms");
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
--EditorGUI.indentLevel;
}
}
public override float GetPropertyHeight(SerializedProperty prop, GUIContent label)
{
if (ChartEditorHelper.IsToggle(m_AnimationModuleToggle, prop))
return 8 * EditorGUIUtility.singleLineHeight + 7 * EditorGUIUtility.standardVerticalSpacing;
else
return 1 * EditorGUIUtility.singleLineHeight + 1 * EditorGUIUtility.standardVerticalSpacing;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 844042f92a581474ba0491427f3fd592
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,4 +1,11 @@
using System.Collections.Generic;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
@@ -17,7 +24,10 @@ namespace XCharts
SerializedProperty m_Origin = prop.FindPropertyRelative("m_Origin");
SerializedProperty m_Color = prop.FindPropertyRelative("m_Color");
SerializedProperty m_ToColor = prop.FindPropertyRelative("m_ToColor");
SerializedProperty m_HighlightColor = prop.FindPropertyRelative("m_HighlightColor");
SerializedProperty m_HighlightToColor = prop.FindPropertyRelative("m_HighlightToColor");
SerializedProperty m_Opacity = prop.FindPropertyRelative("m_Opacity");
SerializedProperty m_TooltipHighlight = prop.FindPropertyRelative("m_TooltipHighlight");
ChartEditorHelper.MakeFoldout(ref drawRect, ref m_AreaStyleToggle, prop, "Area Style", show, false);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
@@ -30,8 +40,14 @@ namespace XCharts
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_ToColor);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_HighlightColor);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_HighlightToColor);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Opacity);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_TooltipHighlight);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
--EditorGUI.indentLevel;
}
}
@@ -41,7 +57,7 @@ namespace XCharts
float height = 0;
if (ChartEditorHelper.IsToggle(m_AreaStyleToggle, prop))
{
height += 5 * EditorGUIUtility.singleLineHeight + 4 * EditorGUIUtility.standardVerticalSpacing;
height += 8 * EditorGUIUtility.singleLineHeight + 7 * EditorGUIUtility.standardVerticalSpacing;
}
else
{

View File

@@ -1,4 +1,11 @@
using System.Collections.Generic;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
@@ -27,6 +34,7 @@ namespace XCharts
SerializedProperty m_Show = prop.FindPropertyRelative("m_Show");
SerializedProperty m_Type = prop.FindPropertyRelative("m_Type");
SerializedProperty m_SplitNumber = prop.FindPropertyRelative("m_SplitNumber");
SerializedProperty m_Interval = prop.FindPropertyRelative("m_Interval");
SerializedProperty m_AxisLabel = prop.FindPropertyRelative("m_AxisLabel");
SerializedProperty m_ShowSplitLine = prop.FindPropertyRelative("m_ShowSplitLine");
SerializedProperty m_SplitLineType = prop.FindPropertyRelative("m_SplitLineType");
@@ -74,6 +82,8 @@ namespace XCharts
}
EditorGUI.PropertyField(drawRect, m_SplitNumber);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Interval);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
if (m_ShowSplitLine.boolValue)
{
drawRect.width = EditorGUIUtility.labelWidth + 10;
@@ -140,7 +150,7 @@ namespace XCharts
SerializedProperty m_AxisLabel = prop.FindPropertyRelative("m_AxisLabel");
SerializedProperty m_SplitArea = prop.FindPropertyRelative("m_SplitArea");
float height = 0;
height += 10 * EditorGUIUtility.singleLineHeight + 9 * EditorGUIUtility.standardVerticalSpacing;
height += 11 * EditorGUIUtility.singleLineHeight + 10 * EditorGUIUtility.standardVerticalSpacing;
Axis.AxisType type = (Axis.AxisType)m_Type.enumValueIndex;
if (type == Axis.AxisType.Category)
{
@@ -148,7 +158,7 @@ namespace XCharts
{
SerializedProperty m_Data = prop.FindPropertyRelative("m_Data");
int num = m_Data.arraySize + 2;
if (num > 50) num = 13;
if (num > 30) num = 14;
height += num * EditorGUIUtility.singleLineHeight + (num - 1) * EditorGUIUtility.standardVerticalSpacing;
height += EditorGUIUtility.standardVerticalSpacing;
}

View File

@@ -1,4 +1,11 @@
using System.Collections.Generic;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
@@ -14,6 +21,7 @@ namespace XCharts
Rect drawRect = pos;
drawRect.height = EditorGUIUtility.singleLineHeight;
SerializedProperty show = prop.FindPropertyRelative("m_Show");
SerializedProperty m_Formatter = prop.FindPropertyRelative("m_Formatter");
SerializedProperty m_Inside = prop.FindPropertyRelative("m_Inside");
SerializedProperty m_Interval = prop.FindPropertyRelative("m_Interval");
SerializedProperty m_Rotate = prop.FindPropertyRelative("m_Rotate");
@@ -21,10 +29,11 @@ namespace XCharts
SerializedProperty m_Color = prop.FindPropertyRelative("m_Color");
SerializedProperty m_FontSize = prop.FindPropertyRelative("m_FontSize");
SerializedProperty m_FontStyle = prop.FindPropertyRelative("m_FontStyle");
SerializedProperty m_ForceENotation = prop.FindPropertyRelative("m_ForceENotation");
ChartEditorHelper.MakeFoldout(ref drawRect, ref m_AxisLabelToggle,prop, "Axis Label", show, false);
ChartEditorHelper.MakeFoldout(ref drawRect, ref m_AxisLabelToggle, prop, "Axis Label", show, false);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
if (ChartEditorHelper.IsToggle(m_AxisLabelToggle,prop))
if (ChartEditorHelper.IsToggle(m_AxisLabelToggle, prop))
{
++EditorGUI.indentLevel;
EditorGUI.PropertyField(drawRect, m_Inside);
@@ -41,6 +50,10 @@ namespace XCharts
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_FontStyle);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Formatter);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_ForceENotation);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
--EditorGUI.indentLevel;
}
}
@@ -48,9 +61,9 @@ namespace XCharts
public override float GetPropertyHeight(SerializedProperty prop, GUIContent label)
{
float height = 0;
if (ChartEditorHelper.IsToggle(m_AxisLabelToggle,prop))
if (ChartEditorHelper.IsToggle(m_AxisLabelToggle, prop))
{
height += 7 * EditorGUIUtility.singleLineHeight + 6 * EditorGUIUtility.standardVerticalSpacing;
height += 9 * EditorGUIUtility.singleLineHeight + 10 * EditorGUIUtility.standardVerticalSpacing;
}
return height;
}

View File

@@ -1,4 +1,11 @@
using System.Collections.Generic;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
@@ -15,6 +22,7 @@ namespace XCharts
drawRect.height = EditorGUIUtility.singleLineHeight;
SerializedProperty show = prop.FindPropertyRelative("m_Show");
SerializedProperty m_OnZero = prop.FindPropertyRelative("m_OnZero");
SerializedProperty m_Width = prop.FindPropertyRelative("m_Width");
SerializedProperty m_Symbol = prop.FindPropertyRelative("m_Symbol");
SerializedProperty m_SymbolWidth = prop.FindPropertyRelative("m_SymbolWidth");
SerializedProperty m_SymbolHeight = prop.FindPropertyRelative("m_SymbolHeight");
@@ -28,6 +36,8 @@ namespace XCharts
++EditorGUI.indentLevel;
EditorGUI.PropertyField(drawRect, m_OnZero);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Width);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Symbol);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_SymbolWidth);
@@ -47,7 +57,7 @@ namespace XCharts
float height = 0;
if (ChartEditorHelper.IsToggle(m_AxisLineToggle,prop))
{
height += 6 * EditorGUIUtility.singleLineHeight + 7 * EditorGUIUtility.standardVerticalSpacing;
height += 7 * EditorGUIUtility.singleLineHeight + 6 * EditorGUIUtility.standardVerticalSpacing;
}
return height;
}

View File

@@ -1,4 +1,11 @@
using System.Collections.Generic;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
@@ -16,7 +23,7 @@ namespace XCharts
SerializedProperty show = prop.FindPropertyRelative("m_Show");
SerializedProperty m_Name = prop.FindPropertyRelative("m_Name");
SerializedProperty m_Location = prop.FindPropertyRelative("m_Location");
SerializedProperty m_Gap = prop.FindPropertyRelative("m_Gap");
SerializedProperty m_Offset = prop.FindPropertyRelative("m_Offset");
SerializedProperty m_Rotate = prop.FindPropertyRelative("m_Rotate");
SerializedProperty m_Color = prop.FindPropertyRelative("m_Color");
SerializedProperty m_FontSize = prop.FindPropertyRelative("m_FontSize");
@@ -31,8 +38,17 @@ namespace XCharts
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Location);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Gap);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Offset);
drawRect.y += EditorGUI.GetPropertyHeight(m_Offset);
// EditorGUI.LabelField(drawRect, "Offset");
// var startX = drawRect.x + EditorGUIUtility.labelWidth - EditorGUI.indentLevel * 15;
// var tempWidth = (pos.width - startX + 35) / 2;
// var xRect = new Rect(startX, drawRect.y, tempWidth, drawRect.height);
// var yRect = new Rect(xRect.x + tempWidth - 20, drawRect.y, tempWidth, drawRect.height);
// var x = EditorGUI.FloatField(xRect, m_Offset.vector2Value.x);
// var y = EditorGUI.FloatField(yRect, m_Offset.vector2Value.y);
// m_Offset.vector2Value = new Vector2(x,y);
// drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Rotate);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Color);

View File

@@ -1,4 +1,11 @@
using System.Collections.Generic;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

View File

@@ -1,4 +1,11 @@
using UnityEditor;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
using UnityEngine;
namespace XCharts

View File

@@ -1,4 +1,11 @@
using UnityEditor;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
using UnityEngine;
namespace XCharts
@@ -12,55 +19,68 @@ namespace XCharts
{
Rect drawRect = pos;
drawRect.height = EditorGUIUtility.singleLineHeight;
SerializedProperty show = prop.FindPropertyRelative("m_Show");
SerializedProperty m_Type = prop.FindPropertyRelative("m_Type");
SerializedProperty m_FilterMode = prop.FindPropertyRelative("m_FilterMode");
SerializedProperty show = prop.FindPropertyRelative("m_Enable");
//SerializedProperty m_FilterMode = prop.FindPropertyRelative("m_FilterMode");
//SerializedProperty m_Orient = prop.FindPropertyRelative("m_Orient");
SerializedProperty m_SupportInside = prop.FindPropertyRelative("m_SupportInside");
SerializedProperty m_SupportSlider = prop.FindPropertyRelative("m_SupportSlider");
//SerializedProperty m_SupportSelect = prop.FindPropertyRelative("m_SupportSelect");
SerializedProperty m_ShowDataShadow = prop.FindPropertyRelative("m_ShowDataShadow");
SerializedProperty m_ShowDetail = prop.FindPropertyRelative("m_ShowDetail");
SerializedProperty m_ZoomLock = prop.FindPropertyRelative("m_ZoomLock");
SerializedProperty m_Realtime = prop.FindPropertyRelative("m_Realtime");
SerializedProperty m_BackgroundColor = prop.FindPropertyRelative("m_BackgroundColor");
// SerializedProperty m_Realtime = prop.FindPropertyRelative("m_Realtime");
// SerializedProperty m_BackgroundColor = prop.FindPropertyRelative("m_BackgroundColor");
SerializedProperty m_Height = prop.FindPropertyRelative("m_Height");
SerializedProperty m_Bottom = prop.FindPropertyRelative("m_Bottom");
SerializedProperty m_RangeMode = prop.FindPropertyRelative("m_RangeMode");
SerializedProperty m_Start = prop.FindPropertyRelative("m_Start");
SerializedProperty m_End = prop.FindPropertyRelative("m_End");
SerializedProperty m_ScrollSensitivity = prop.FindPropertyRelative("m_ScrollSensitivity");
SerializedProperty m_FontSize = prop.FindPropertyRelative("m_FontSize");
SerializedProperty m_FontStyle = prop.FindPropertyRelative("m_FontStyle");
ChartEditorHelper.MakeFoldout(ref drawRect, ref m_DataZoomModuleToggle, "DataZoom", show);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
if (m_DataZoomModuleToggle)
{
++EditorGUI.indentLevel;
EditorGUI.PropertyField(drawRect, m_Type);
EditorGUI.PropertyField(drawRect, m_SupportInside);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_FilterMode);
EditorGUI.PropertyField(drawRect, m_SupportSlider);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
//EditorGUI.PropertyField(drawRect, m_Orient);
if (m_SupportSlider.boolValue)
{
++EditorGUI.indentLevel;
EditorGUI.PropertyField(drawRect, m_ShowDataShadow);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_ShowDetail);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_FontSize);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_FontStyle);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
// EditorGUI.PropertyField(drawRect, m_Realtime);
// drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Height);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Bottom);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
--EditorGUI.indentLevel;
}
//EditorGUI.PropertyField(drawRect, m_SupportSelect);
//drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_ShowDataShadow);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_ShowDetail);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_ZoomLock);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Realtime);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_ScrollSensitivity);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_BackgroundColor);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Height);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Bottom);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_RangeMode);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_Start);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
EditorGUI.PropertyField(drawRect, m_End);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
if (m_Start.floatValue < 0) m_Start.floatValue = 0;
if (m_End.floatValue > 100) m_End.floatValue = 100;
--EditorGUI.indentLevel;
}
}
@@ -68,12 +88,14 @@ namespace XCharts
public override float GetPropertyHeight(SerializedProperty prop, GUIContent label)
{
float height = 0;
int num = 1;
if (m_DataZoomModuleToggle)
{
height += 13 * EditorGUIUtility.singleLineHeight + 12 * EditorGUIUtility.standardVerticalSpacing;
num += 7;
if (prop.FindPropertyRelative("m_SupportSlider").boolValue) num += 6;
}
height += 1 * EditorGUIUtility.singleLineHeight + 1 * EditorGUIUtility.standardVerticalSpacing;
height += num * EditorGUIUtility.singleLineHeight + (num - 1) * EditorGUIUtility.standardVerticalSpacing;
return height;
}
}

View File

@@ -0,0 +1,55 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace XCharts
{
[CustomPropertyDrawer(typeof(Emphasis), true)]
public class EmphasisDrawer : PropertyDrawer
{
private Dictionary<string, bool> m_EmphasisToggle = new Dictionary<string, bool>();
public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label)
{
Rect drawRect = pos;
drawRect.height = EditorGUIUtility.singleLineHeight;
SerializedProperty show = prop.FindPropertyRelative("m_Show");
SerializedProperty m_Label = prop.FindPropertyRelative("m_Label");
SerializedProperty m_ItemStyle = prop.FindPropertyRelative("m_ItemStyle");
ChartEditorHelper.MakeFoldout(ref drawRect, ref m_EmphasisToggle, prop, "Emphasis", show, false);
drawRect.y += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
if (ChartEditorHelper.IsToggle(m_EmphasisToggle, prop))
{
++EditorGUI.indentLevel;
EditorGUI.PropertyField(drawRect, m_Label);
drawRect.y += EditorGUI.GetPropertyHeight(m_Label);
EditorGUI.PropertyField(drawRect, m_ItemStyle);
drawRect.y += EditorGUI.GetPropertyHeight(m_ItemStyle);
--EditorGUI.indentLevel;
}
}
public override float GetPropertyHeight(SerializedProperty prop, GUIContent label)
{
float height = 0;
if (ChartEditorHelper.IsToggle(m_EmphasisToggle, prop))
{
height += 1 * EditorGUIUtility.singleLineHeight + 1 * EditorGUIUtility.standardVerticalSpacing;
height += EditorGUI.GetPropertyHeight(prop.FindPropertyRelative("m_Label"));
height += EditorGUI.GetPropertyHeight(prop.FindPropertyRelative("m_ItemStyle"));
}
else
{
height += 1 * EditorGUIUtility.singleLineHeight + 1 * EditorGUIUtility.standardVerticalSpacing;
}
return height;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7de9b5e4c5d474fdd88ebb89f0924305
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,4 +1,11 @@
using UnityEditor;
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
using UnityEngine;
namespace XCharts

Some files were not shown because too many files have changed in this diff Show More