diff --git a/Assets/XCharts/CHANGELOG.md b/Assets/XCharts/CHANGELOG.md index b13343a3..7bc1cc3b 100644 --- a/Assets/XCharts/CHANGELOG.md +++ b/Assets/XCharts/CHANGELOG.md @@ -1,6 +1,7 @@ # 更新日志 +* (2019.11.03) 增加`Editor`快捷添加图表:`Hierarchy`试图下右键`XCharts->LineChart` * (2019.10.31) 修复`prefab`预设制作报错的问题 * (2019.10.31) 增加访问主题组件API:`BaseChart.themeInfo` * (2019.10.26) 发布`v1.0.1`版本 diff --git a/Assets/XCharts/Editor/XChartEditor.cs b/Assets/XCharts/Editor/XChartEditor.cs new file mode 100644 index 00000000..a1e2bc51 --- /dev/null +++ b/Assets/XCharts/Editor/XChartEditor.cs @@ -0,0 +1,102 @@ +/******************************************/ +/* */ +/* Copyright (c) 2018 monitor1394 */ +/* https://github.com/monitor1394 */ +/* */ +/******************************************/ + +using UnityEditor; +using UnityEngine; +using UnityEngine.UI; + +namespace XCharts +{ + public class XChartEditor : EditorWindow + { + private static Transform GetParent() + { + GameObject selectObj = Selection.activeGameObject; + if (selectObj == null) + { + var canvas = GameObject.FindObjectOfType(); + if (canvas != null) return canvas.transform; + else + { + var canvasObject = new GameObject(); + canvasObject.name = "Canvas"; + canvas = canvasObject.AddComponent(); + canvas.renderMode = RenderMode.ScreenSpaceOverlay; + canvasObject.AddComponent(); + canvasObject.AddComponent(); + return canvas.transform; + } + } + else + { + return selectObj.transform; + } + } + + private static string GetName(Transform parent, string name) + { + if (parent.Find(name) == null) return name; + for (int i = 1; i <= 10; i++) + { + var newName = string.Format("{0} ({1})", name, i); + if (parent.Find(newName) == null) + { + return newName; + } + } + return name; + } + + private static void AddChart(string chartName) where T : BaseChart + { + var parent = GetParent(); + if (parent == null) return; + var chart = new GameObject(); + chart.name = GetName(parent, chartName); + chart.AddComponent(); + chart.transform.SetParent(parent); + chart.transform.localScale = Vector3.one; + chart.transform.localPosition = Vector3.zero; + } + + [MenuItem("GameObject/XCharts/LineChart", priority = 44)] + public static void AddLineChart() + { + AddChart("LineChart"); + } + + [MenuItem("GameObject/XCharts/BarChart", priority = 45)] + public static void AddBarChart() + { + AddChart("BarChart"); + } + + [MenuItem("GameObject/XCharts/PieChart", priority = 46)] + public static void AddPieChart() + { + AddChart("PieChart"); + } + + [MenuItem("GameObject/XCharts/RadarChart", priority = 47)] + public static void AddRadarChart() + { + AddChart("RadarChart"); + } + + [MenuItem("GameObject/XCharts/ScatterChart", priority = 48)] + public static void AddScatterChart() + { + AddChart("ScatterChart"); + } + + [MenuItem("GameObject/XCharts/HeatmapChart", priority = 49)] + public static void AddHeatmapChart() + { + AddChart("HeatmapChart"); + } + } +} \ No newline at end of file diff --git a/Assets/XCharts/Editor/XChartEditor.cs.meta b/Assets/XCharts/Editor/XChartEditor.cs.meta new file mode 100644 index 00000000..00e4a883 --- /dev/null +++ b/Assets/XCharts/Editor/XChartEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 941beb76fdaa64a27a2df6561893157e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Doc/screenshot/op_addchart.png b/Doc/screenshot/op_addchart.png new file mode 100644 index 00000000..86c5fcc9 Binary files /dev/null and b/Doc/screenshot/op_addchart.png differ diff --git a/Doc/教程:5分钟上手XCharts.md b/Doc/教程:5分钟上手XCharts.md index eaa14479..fcbd1436 100644 --- a/Doc/教程:5分钟上手XCharts.md +++ b/Doc/教程:5分钟上手XCharts.md @@ -28,9 +28,9 @@ --- -新建场景或在已有场景的 `Canvas` 下添加一个名为 `line_chart` 的 `GameObject`。 - -选中 `line_chart`,通过菜单栏 `Component->XCharts->LineChart` 或者 `Inspector` 视图的 `Add Component` 添加 `LineChart` 脚本。设置 `line_chart` 的尺寸,一个简单的折线图就出来了。 +在`Hierarchy`试图下右键或菜单栏`GameObject`下拉:`XCharts->LineChart`: +![linechart](screenshot/op_addchart.png) +即可快速创建一个简单的折线图出来: ![linechart](screenshot/linechart.png) 在 `Inspector` 视图下可以调整各个组件的参数,`Game` 视图会实时反馈调整的效果。各个组件的详细参数说明可查阅[XCharts配置项手册](XCharts配置项手册.md)。 ![inspcetor-desc](screenshot/inpsector-desc.png) @@ -104,7 +104,6 @@ for (int i = 0; i < 10; i++) 完整代码请查阅`Demo`:`Demo10_LineSimple.cs` 你还可以用代码控制更多的参数,[XCharts配置项手册](XCharts配置项手册.md)里面的所有参数都是可以通过代码控制的。 - [返回首页](https://github.com/monitor1394/unity-ugui-XCharts) [XChartsAPI接口](XChartsAPI.md) [XCharts配置项手册](XCharts配置项手册.md) diff --git a/README.md b/README.md index e4862c82..7adee497 100644 --- a/README.md +++ b/README.md @@ -114,9 +114,8 @@ XCharts的图表由组件和数据组成。不同的组件和数据可以组合 * 在Editor上快速创建一个图表: - 1. 在`Canvas`下通过`Create Empty`创建一个空`gameObject`,命名为 `line_chart`。 - 2. 通过菜单栏 `Component->XCharts->LineChart` 或者 `Inspector` 视图的 `Add Component` 添加 `LineChart` 脚本。一个简单的折线图就出来了。 - 3. `Inspector` 视图下可以调整各个组件的参数,`Game` 视图会实时反馈调整的效果。各个组件的详细参数说明可查阅[XCharts配置项手册](https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Assets/XCharts/Documentation/XCharts配置项手册.md)。 + 1. 在`Hierarchy`试图下右键或菜单栏`GameObject`下拉:`XCharts->LineChart`,即可快速创建一个简单的折线图出来。 + 2. `Inspector` 视图下可以调整各个组件的参数,`Game` 视图会实时反馈调整的效果。各个组件的详细参数说明可查阅[XCharts配置项手册](https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Assets/XCharts/Documentation/XCharts配置项手册.md)。 * 更多的代码动态控制的例子请参考[教程:5分钟上手XCharts](https://github.com/monitor1394/unity-ugui-XCharts/blob/master/Doc/教程:5分钟上手XCharts.md) 。