11 using UnityEngine.EventSystems;
17 private static Transform GetParent()
19 GameObject selectObj = Selection.activeGameObject;
20 if (selectObj ==
null)
22 var canvas = GameObject.FindObjectOfType<Canvas>();
23 if (canvas !=
null)
return canvas.transform;
26 var canvasObject =
new GameObject();
27 canvasObject.name =
"Canvas";
28 canvas = canvasObject.AddComponent<Canvas>();
29 canvas.renderMode = RenderMode.ScreenSpaceOverlay;
30 canvasObject.AddComponent<CanvasScaler>();
31 canvasObject.AddComponent<GraphicRaycaster>();
32 var eventSystem =
new GameObject();
33 eventSystem.name =
"EventSystem";
34 eventSystem.AddComponent<EventSystem>();
35 eventSystem.AddComponent<StandaloneInputModule>();
36 return canvas.transform;
41 return selectObj.transform;
45 private static string GetName(Transform parent,
string name)
47 if (parent.Find(name) ==
null)
return name;
48 for (
int i = 1; i <= 10; i++)
50 var newName =
string.Format(
"{0} ({1})", name, i);
51 if (parent.Find(newName) ==
null)
59 public static void AddChart<T>(
string chartName) where T :
BaseChart
61 var parent = GetParent();
62 if (parent ==
null)
return;
63 var chart =
new GameObject();
64 chart.name = GetName(parent, chartName);
65 chart.AddComponent<T>();
66 chart.transform.SetParent(parent);
67 chart.transform.localScale = Vector3.one;
68 chart.transform.localPosition = Vector3.zero;
69 var rect = chart.GetComponent<RectTransform>();
70 rect.anchorMin =
new Vector2(0.5f, 0.5f);
71 rect.anchorMax =
new Vector2(0.5f, 0.5f);
72 rect.pivot =
new Vector2(0.5f, 0.5f);
73 Selection.activeGameObject = chart;
74 EditorUtility.SetDirty(chart);
77 [MenuItem(
"XCharts/LineChart", priority = 44)]
78 [MenuItem(
"GameObject/XCharts/LineChart", priority = 44)]
79 public static void AddLineChart()
81 AddChart<LineChart>(
"LineChart");
84 [MenuItem(
"XCharts/BarChart", priority = 45)]
85 [MenuItem(
"GameObject/XCharts/BarChart", priority = 45)]
86 public static void AddBarChart()
88 AddChart<BarChart>(
"BarChart");
91 [MenuItem(
"XCharts/PieChart", priority = 46)]
92 [MenuItem(
"GameObject/XCharts/PieChart", priority = 46)]
93 public static void AddPieChart()
95 AddChart<PieChart>(
"PieChart");
98 [MenuItem(
"XCharts/RadarChart", priority = 47)]
99 [MenuItem(
"GameObject/XCharts/RadarChart", priority = 47)]
100 public static void AddRadarChart()
102 AddChart<RadarChart>(
"RadarChart");
105 [MenuItem(
"XCharts/ScatterChart", priority = 48)]
106 [MenuItem(
"GameObject/XCharts/ScatterChart", priority = 48)]
107 public static void AddScatterChart()
109 AddChart<ScatterChart>(
"ScatterChart");
112 [MenuItem(
"XCharts/HeatmapChart", priority = 49)]
113 [MenuItem(
"GameObject/XCharts/HeatmapChart", priority = 49)]
114 public static void AddHeatmapChart()
116 AddChart<HeatmapChart>(
"HeatmapChart");
119 [MenuItem(
"XCharts/GaugeChart", priority = 50)]
120 [MenuItem(
"GameObject/XCharts/GaugeChart", priority = 50)]
121 public static void AddGaugeChart()
123 AddChart<GaugeChart>(
"GaugeChart");
126 [MenuItem(
"XCharts/RingChart", priority = 51)]
127 [MenuItem(
"GameObject/XCharts/RingChart", priority = 51)]
128 public static void AddRingChart()
130 AddChart<RingChart>(
"RingChart");
133 [MenuItem(
"XCharts/PolarChart", priority = 52)]
134 [MenuItem(
"GameObject/XCharts/PolarChart", priority = 52)]
135 public static void AddPolarChart()
137 AddChart<PolarChart>(
"PolarChart");
140 [MenuItem(
"XCharts/LiquidChart", priority = 53)]
141 [MenuItem(
"GameObject/XCharts/LiquidChart", priority = 53)]
142 public static void AddLiquidChart()
144 AddChart<LiquidChart>(
"LiquidChart");
147 [MenuItem(
"XCharts/CandlestickChart", priority = 54)]
148 [MenuItem(
"GameObject/XCharts/CandlestickChart", priority = 54)]
151 AddChart<CandlestickChart>(
"CandlestickChart");
154 [MenuItem(
"XCharts/Themes Reload")]
155 public static void ReloadTheme()
157 XThemeMgr.ReloadThemeList();
160 [MenuItem(
"XCharts/TextMeshPro Enable")]
161 public static void EnableTextMeshPro()
165 Debug.LogError(
"TextMeshPro is not in the project, please import TextMeshPro package first.");
172 [MenuItem(
"XCharts/TextMeshPro Disable")]
173 public static void DisableTextMeshPro()