From df4223421f9e654bbc5001293684674c94a8e1fc Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Fri, 27 Sep 2024 19:08:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=95=99=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Documentation~/zh/changelog.md | 1 + Documentation~/zh/img/tutorial01_axisdata.png | Bin 0 -> 23064 bytes .../zh/img/tutorial01_seriedata.png | Bin 0 -> 26370 bytes Documentation~/zh/tutorial01.md | 167 ++++++++++++------ 4 files changed, 116 insertions(+), 52 deletions(-) create mode 100644 Documentation~/zh/img/tutorial01_axisdata.png create mode 100644 Documentation~/zh/img/tutorial01_seriedata.png diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index a6301656..4c634e2e 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -76,6 +76,7 @@ slug: /changelog ## master +* (2024.09.27) 完善`5分钟教程` * (2024.09.24) 完善`Legend`的`formatter`对多Serie的支持 (#332) * (2024.09.22) 调整`Documentation`文档显示样式 * (2024.09.09) 增加`numericFormatter`对`date`和`time`的支持 diff --git a/Documentation~/zh/img/tutorial01_axisdata.png b/Documentation~/zh/img/tutorial01_axisdata.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4910aff32ac672f731a2d7ca7ff94646cfc131 GIT binary patch literal 23064 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 literal 0 HcmV?d00001 diff --git a/Documentation~/zh/tutorial01.md b/Documentation~/zh/tutorial01.md index 0c2b382e..9c83fa1e 100644 --- a/Documentation~/zh/tutorial01.md +++ b/Documentation~/zh/tutorial01.md @@ -6,84 +6,124 @@ slug: /tutorial01 # 教程:5分钟上手 XCharts 3.0 -> 注:本教程适用XCharts 3.x版本,2.x版本请看 [教程:5分钟上手XCharts 2.0](https://github.com/XCharts-Team/XCharts/blob/2.0/Doc/教程:5分钟上手XCharts.md) +> Note:本教程仅适用XCharts 3.x版本,2.x版本请看 [教程:5分钟上手XCharts 2.0](https://github.com/XCharts-Team/XCharts/blob/2.0/Doc/教程:5分钟上手XCharts.md) -## 使用 XCharts 前需要掌握什么 +## XCharts的前提条件 -- 会简单使用Unity -- 了解UGUI,会使用UGUI -- 了解Unity的MonoBehavior脚本用法,知道怎么挂脚本,用代码操作脚本 +XCharts是一个Unity图表插件,目前只能在Unity平台使用。 -## 获取和导入 XCharts +使用XCharts前,你需要: -XCharts可通过以下任意一种方式导入到项目: +- 掌握Unity的基本用法。 +- 掌握UGUI制作UI的基本用法。 +- 了解Unity的MonoBehavior脚本用法,知道怎么挂脚本和用代码操作脚本。 -- 直接将XCharts源码到项目 +如果你刚接触Unity,建议先学习Unity相关的基础教程再使用XCharts。 - 下载好XCharts源码后,直接将XCharts目录拷贝到Unity项目工程的Assets目录下。 +## XCharts的获取和导入 -- 通过`Assets/Import Package`导入XCharts +XCharts主要通过Github来维护更新和发布,可以到Github主页进行下载获取源码和Pacakge,Github主页:https://github.com/XCharts-Team。 - 下载好XCharts的.unitypackage文件后,打开Unity,菜单栏 Assets-->Import Package-->选中.unitypackage导入即可开始使用XCharts。 +对于无Github访问条件的用户,可以访问[【国内镜像】](https://gitee.com/monitor1394/unity-ugui-XCharts)进行下载。国内镜像的版本更新可能会相对滞后。 -- 通过`Package Manager`导入XCharts +XCharts可通过以下任意一种方式导入到你的项目: - 对于Unity 2018.3以上版本,可通过 Package Manager来导入XCharts,打开Package Manager后,通过 `Add package form git URL...`,输入XCharts3.0的GitHub URL: `https://github.com/XCharts-Team/XCharts.git#3.0` 稍等片刻后即可使用XCharts。 +### 直接将XCharts源码拷贝到项目 - 也可以直接将package加入到`manifest.json`文件:打开`Packages`目录下的`manifest.json`文件,在`dependencies`下加入: +下载好XCharts源码后,直接将XCharts目录拷贝到Unity项目工程的Assets目录下。编译通过后即可使用。 - ``` json - "com.monitor1394.xcharts": "https://github.com/XCharts-Team/XCharts.git#3.0", - ``` +### 通过Import Package导入XCharts - 如需更新`XCharts`,删除`manifest.json`文件(部分Unity版本可能是packages-lock.json文件)的`lock`下的`com.monitor1394.xcharts`相关内容即会重新下载编译。 +下载好XCharts的.unitypackage文件后,打开Unity,菜单栏 Assets-->Import Package-->选中下载好的.unitypackage进行导入。导入完成并通过编译后即可开始使用XCharts。 -- 建议先导入XCharts的守护程序(非必须) +### 通过Package Manager导入XCharts - 守护程序[XCharts-Daemon](https://github.com/XCharts-Team/XCharts-Daemon)可以确保更新时编译正常,当本地开启TextMeshPro或NewInputSystem时将会非常有用。将XCharts-Daemon导入项目后,在更新XCharts时守护程序会自动根据本地TMP等的开启情况刷新asmdef,确保编译正常,不用手动去解决,方便CI-CD等自动化流程执行。 +对于2018.3以上的Unity版本,可通过Package Manager来导入XCharts,打开Package Manager后,通过 `Add package form git URL...`,输入XCharts的GitHub URL: `https://github.com/XCharts-Team/XCharts.git` 编译通过后即可使用XCharts。 -## 添加一个简单图表 +对于部分Unity版本,也可以直接将package加入到`manifest.json`文件:打开`Packages`目录下的`manifest.json`文件,在`dependencies`下加入: -在`Hierarchy`视图下右键`UI->XCharts->LineChart`或菜单栏`GameObject`下拉选择`XCharts->LineChart`,即可快速创建一个默认的折线图出来: +>"com.monitor1394.xcharts": "https://github.com/XCharts-Team/XCharts.git", + +如需更新`XCharts`,删除`manifest.json`文件(部分Unity版本可能是packages-lock.json文件)的`lock`下的`com.monitor1394.xcharts`相关内容即会重新下载编译。 + +### 建议导入XCharts的守护程序 + +守护程序[XCharts-Daemon](https://github.com/XCharts-Team/XCharts-Daemon)可以确保更新时编译正常,当本地开启TextMeshPro或NewInputSystem时将会非常有用。将XCharts-Daemon导入项目后,在更新XCharts时守护程序会自动根据本地TMP等的开启情况刷新XCharts的asmdef,确保编译正常,不用手动去解决,方便CI/CD等自动化流程执行。 + +XCharts-Daemon的导入方式可参考刚才的XCharts导入方式。可以通过源码或Package的方式导入项目,XCharts-Daemon的Github URL:https://github.com/XCharts-Team/XCharts-Daemon.git + +## XCharts的基本使用 + +导入XCharts并编译通过后,Unity编辑器的菜单栏会显示XCharts,这时可以开始使用XCharts了。 + +>Note:Unity的菜单栏出现XCharts菜单时才表示XCharts可用。 + +### 添加一个简单图表 + +在`Hierarchy`视图下右键`UI->XCharts->LineChart`或菜单栏`XCharts`下拉选择`LineChart`,即可快速创建一个默认的折线图出来: ![linechart1](img/tutorial01_linechart1.png) -## 添加多个Seire +如需在某个节点下创建图表,可以选中节点右键`UI->XCharts->LineChart`即可在节点下创建图表。 + +### 修改图表数据 + +刚创建的图表,它的数据可以在Inspector视图面板上进行修改。 + +对于X轴数据,可通过:`XAxis->Data`展开后进行增删和修改: + +![op_axisdata](img/tutorial01_axisdata.png) + +对于Serie数据,可通过:`Serie->Data`展开后进行增删和修改: + +![op_seriedata](img/tutorial01_seriedata.png) + +Serie支持多维数据,一般折线图只用到二维数据:第一维表示X轴类目数据的编号,第二维表示对应的数值。 + +### 添加多个Seire 在`Inspector`视图,找到`LineChart`的面板,通过`Add Serie`按钮,可以添加第二条`Line`折线: ![op_addserie](img/tutorial01_addserie.png) ![linechart2](img/tutorial01_linechart2.png) -## 添加其他组件 +>Note:Serie通过`Add Serie`按钮添加。可添加不同类型的Serie。[XCharts有哪些Serie?](https://xcharts-team.github.io/docs/configuration#serie-系列) + +### 添加其他主组件 默认图表没有`Legend`,需要`Legend`组件可通过`Add Component`按钮添加: ![op_addcomponent](img/tutorial01_addcomponent.png) -## 添加Serie组件 +>Note:主组件通过`Add Component`按钮添加。[XCharts有哪些主组件?](https://xcharts-team.github.io/docs/configuration/#maincomponent-主组件) -Serie只自带了几个常见的组件,其他组件按需额外添加。比如,需要给折线图区域填充颜色,可单独给`Serie`添加`AreaStyle`组件: +### 添加Serie组件 + +Serie只自带了几个常见的组件,其他组件用到时需额外添加。比如,需要给折线图进行区域填充颜色,可单独给`Serie`添加`AreaStyle`组件: ![op_addseriecomponent](img/tutorial01_addseriecomponent.png) ![linechart3](img/tutorial01_linechart3.png) -## 添加SerieData组件 +>Note:Serie组件通过Serie右边的按钮添加。[XCharts有哪些Serie组件?](https://xcharts-team.github.io/docs/configuration/#iseriecomponent-可添加到serie的组件) -如果需要个性化定制每个数据项的配置,可以单独给每个`SerieData`添加`Component`。比如我们给折线图的第二个数据单独显示`Label`: +### 添加SerieData组件 + +如果需要个性化定制每个数据项的配置,可以单独给每个`SerieData`添加组件。比如我们给折线图的第二个数据单独显示`Label`: ![op_addseriedatacomponent](img/tutorial01_addseriedatacomponent.png) ![linechart4](img/tutorial01_linechart4.png) -## 更多组件和配置参数 +>Note:SerieData组件通过展开SerieData后Component右边的按钮添加。[XCharts有哪些SerieData组件?](https://xcharts-team.github.io/docs/configuration/#iseriedatacomponent-可添加到seriedata的组件) -XCharts经过不断的迭代优化,目前已有多达几十种的主组件和子组件,每个组件有几个至几十个不等的可配置参数,以支持各种灵活而复杂的功能。 +### 更多组件和配置参数 -首次使用XCharts,可在 `Inspector` 视图添加各种图表,给图表添加或调整里面组件,`Game` 视图会实时反馈调整后的效果,以熟悉各种组件的使用。各个组件的详细参数说明可查阅[XCharts配置项手册](configuration.md)。 +XCharts经过不断的迭代优化,目前已有多达几十种的主组件和子组件,每个组件有几个到几十个的可配置参数,用来支持多样化的功能。 -## 如何快速调整参数 +首次使用XCharts,建议亲自去测试下各个图表各个组件的实际效果。`Inspector` 视图可以直接添加各种图表,各种组件以及调整各个配置参数,`Game` 视图会实时反馈调整后的效果。各个组件的详细参数说明可查阅[XCharts配置项手册](configuration.md)。 -`XCharts`是配置和数据来驱动的。想要什么效果,只需要去调整对应组件下的配置参数就可以,不需要去改`Hierarchy`视图下的节点,因为那些节点是由`XCharts`内部根据配置和数据生成的,即使改了也会在刷新时还原回来。 +### 如何快速调整参数 + +XCharts是数据和参数驱动的。想要什么效果,只需要去调整对应组件下的配置参数就可以,不能去改`Hierarchy`视图下的节点,因为那些节点是由XCharts内部根据配置和数据生成的,即使改了也会在刷新时被还原掉。 如何快速定位你想要改的效果所对应的组件,这就需要对组件有一定的了解。比如我们想要让X轴的轴线末端显示箭头,如何定位?第一步,X轴定位到`XAxis0`;第二步,轴线定位到`AxisLine`;最后,再去看`AxisLine`组件下有没有这样的参数可以实现这个效果,对于不太确定的参数可以查阅[XCharts配置项手册](configuration.md)。 @@ -93,9 +133,9 @@ XCharts经过不断的迭代优化,目前已有多达几十种的主组件和 2. 如果`Serie`的`ItemStyle`配置有非`0000`颜色值,则优先用这个颜色值。 3. 否则颜色值取自主题`Theme`的`Color Palette`。 -通常颜色值为0000时表示用主题默认颜色,配置为0或null时表示用主题默认配置。 +>Note:通常颜色值为0000时表示用主题默认颜色;其他参数为0或null时表示用主题默认配置;设置颜色时注意透明度。 -## 用代码添加折线图 +### 用代码添加折线图 给`gameObject`挂上`LineChart`脚本: @@ -143,13 +183,21 @@ var yAxis = chart.EnsureChartComponent(); yAxis.type = Axis.AxisType.Value; ``` -清空默认数据,添加`Line`类型的`Serie`用于接收数据: +清空所有默认数据(包含Serie),添加`Line`类型的`Serie`用于接收数据: ```csharp chart.RemoveData(); chart.AddSerie("line"); ``` +如果Serie是固定的,建议只是清空数据,不用把Serie也清掉: + +```csharp +chart.ClearData(); +``` + +这样可以提前在UI上设置好Serie的配置参数。 + 添加10个数据: ```csharp @@ -164,30 +212,26 @@ for (int i = 0; i < 10; i++) ![tutorial01_linechart_simple](img/tutorial01_linechart_simple.png) -如果一个Chart里面有多个系列时,则Axis的data只需要加一次,不要多个循环加重复了。记住:Axis的数据个数要和Serie的数据个数一致。 +如果一个Chart里面有多个系列时,则Axis的data只需要加一次,不要多个循环加重复了。 + +>记住:Axis的数据个数要和Serie的数据个数一致。 完整代码请查阅`Examples`:`Example13_LineSimple.cs` 你还可以用代码控制更多的参数,`Examples`下还有更多的其他例子,凡是`Inspector`上看到的可配置的参数,都可以通过代码来设置。[XCharts配置项手册](configuration.md)里面的所有参数都是可以通过代码控制的。 -另外,除非定制,建议调用`Chart`下提供的`public`接口,特别是数据相关操作部分。这些接口内部会做一些关联处理,比如刷新图表等。常见的接口有: +### 设置默认字体 -1. `chart.ClearData()`:清空图表数据(不移除Series) -2. `chart.RemoveData()`:清除图表数据(会移除所有Serie) -3. `chart.AddSerie()`:添加Serie -4. `chart.AddXAxisData()`:添加X轴数据 -5. `chart.AddData()`:添加Serie数据 -6. `chart.UpdateData()`:更新Serie数据 -7. `chart.UpdateXAxisData()`:更新X轴数据 -8. `chart.UpdateDataName()`:更新Serie数据的名字 +XCharts默认使用的是Unity默认字体`Arial`,在WebGL平台上可能无法显示中文。在将XCharts用在你的项目时,建议先设置好字体: -XCharts内部有自动刷新机制,但也是在一定条件才会触发。如果自己调用了内部组件的接口,碰到组件没有刷新,确实找不到原因的话,可以用以下两个接口强制刷新: +- 找到`XCharts/Resources/XCSetting.asset`文件,修改里面的`Font`并保存。 +- 找到`XCharts/Resources/XCTheme-Default.asset`和`XCharts/Resources/XCTheme-Default.asset`两个字体配置,点击`Sync Font from Setting`和`Sync Font to Sub Theme`按钮将字体同步到主题配置文件上。 -1. `chart.RefreshAllComponent()`:刷新图表组件,会重新初始化所有组件,不建议频繁待用。 -2. `chart.RefreshChart()`:刷新图表绘制,只刷新绘制部分,不会刷新组件文本,位置等部分。 -3. 各个组件也可以通过`SetAllDirty()`只刷新自己。 +字体设置好后,新创建的图表就会用新设置的字体了。对于旧图表,可以点击`Rebuild Chart Object`进行刷新。 -## 使用TextMeshPro +>Note:使用XCharts前建议先设置好字体;更新XCharts时注意设置的字体可能被还原的问题。 + +### 使用TextMeshPro XCharts支持TextMeshPro,但默认是不开启的,需要自己手动切换。可通过以下方式开启和关闭: @@ -206,10 +250,29 @@ XCharts支持TextMeshPro,但默认是不开启的,需要自己手动切换 `3.8.0`版本后增加[XCharts-Daemon](https://github.com/XCharts-Team/XCharts-Daemon)守护程序,将XCharts-Daemon导入项目后,在更新XCharts时守护程序会自动根据本地开启的TMP情况刷新asmdef,确保编译正常。 -## 用代码改图表参数 +## XCharts的代码控制 `Inspector`上看到的所有参数都可以用代码来修改,关键是要定位好你要改的参数是在组件上、还是Serie上、还是在具体的数据项SerieData上。 +另外,除非定制,建议调用`Chart`下提供的`public`接口,特别是数据相关和列表的操作。这些接口内部会做一些关联处理,比如刷新图表等。常见的接口有: + +1. `chart.ClearData()`:清空图表数据(不移除Series) +2. `chart.RemoveData()`:清除图表数据(会移除所有Serie) +3. `chart.AddSerie()`:添加Serie +4. `chart.AddXAxisData()`:添加X轴数据 +5. `chart.AddData()`:添加Serie数据 +6. `chart.UpdateData()`:更新Serie数据 +7. `chart.UpdateXAxisData()`:更新X轴数据 +8. `chart.UpdateDataName()`:更新Serie数据的名字 + +XCharts内部有自动刷新机制,但也是在一定条件才会触发。如果自己调用了内部组件的接口,碰到组件没有刷新,确实找不到原因的话,可以用以下两个接口强制刷新: + +1. `chart.RefreshAllComponent()`:刷新图表组件,会重新初始化所有组件,不建议频繁待用。 +2. `chart.RefreshChart()`:刷新图表绘制,只刷新绘制部分,不会刷新组件文本,位置等部分。 +3. 各个组件也可以通过`SetAllDirty()`只刷新自己。 + +>Note:用API去操作数据和各种list,而不是直接访问list进行处理 + ### 改主组件上的参数 需要先获取组件,再修改里面的参数: