XChart重构:共享数据模型快照、时间序列与多分辨率系列,伪3D散点图/雷达图接入共享数据

This commit is contained in:
2026-08-31 08:29:42 +08:00
parent 48ef51d169
commit 216d157472
28 changed files with 3188 additions and 144 deletions
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c1cc66d669a3dbb40bbba6b3d2406cd0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+34
View File
@@ -0,0 +1,34 @@
using UnityEditor;
using UnityEngine;
using XericUI.XChart;
namespace XericUI.XChart.Editor
{
[CustomEditor(typeof(XChartBase), true)]
internal sealed class XChartBaseEditor : UnityEditor.Editor
{
private bool m_ShowData = true;
private bool m_ShowAdvanced;
public override void OnInspectorGUI()
{
serializedObject.Update();
DrawPropertiesExcluding(serializedObject, "m_Script", "m_DataModel", "m_ShowDebug", "m_HideAllTools");
m_ShowData = EditorGUILayout.Foldout(m_ShowData, "数据", true);
if (m_ShowData)
{
var model = ((XChartBase)target).DataModel;
EditorGUILayout.LabelField("维度", model.Dimensions.Count.ToString());
EditorGUILayout.LabelField("记录", model.Records.Count.ToString());
EditorGUILayout.LabelField("版本", model.Version.ToString());
}
m_ShowAdvanced = EditorGUILayout.Foldout(m_ShowAdvanced, "高级", true);
if (m_ShowAdvanced)
{
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_ShowDebug"));
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_HideAllTools"));
}
serializedObject.ApplyModifiedProperties();
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 817dbf21bd711f44391d88364b5f17c9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+41
View File
@@ -0,0 +1,41 @@
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
using XericUI.XChart.Line;
using XericUI.XChart.Pseudo3D;
using XericUI.XChart.Radar;
namespace XericUI.XChart.Editor
{
internal static class XChartCreateMenu
{
[MenuItem("GameObject/Xeric/XChart/Line Chart", false, 10)]
private static void CreateLineChart() => Create<XLineChart>("XLineChart");
[MenuItem("GameObject/Xeric/XChart/Radar Chart", false, 11)]
private static void CreateRadarChart() => Create<XRadarChart>("XRadarChart");
[MenuItem("GameObject/Xeric/XChart/Pseudo3D Scatter Chart", false, 12)]
private static void CreateScatterChart() => Create<XPseudo3DScatterChart>("XPseudo3DScatterChart");
private static void Create<T>(string name) where T : Component
{
Canvas canvas = Selection.activeTransform == null ? null : Selection.activeTransform.GetComponentInParent<Canvas>();
if (canvas == null)
{
var canvasObject = new GameObject("Canvas", typeof(RectTransform), typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster));
canvas = canvasObject.GetComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
Undo.RegisterCreatedObjectUndo(canvasObject, "Create Canvas");
}
var chart = new GameObject(name, typeof(RectTransform), typeof(T));
var rect = chart.GetComponent<RectTransform>();
rect.SetParent(canvas.transform, false);
rect.anchorMin = rect.anchorMax = new Vector2(0.5f, 0.5f);
rect.pivot = new Vector2(0.5f, 0.5f);
rect.sizeDelta = new Vector2(600f, 360f);
Undo.RegisterCreatedObjectUndo(chart, "Create XChart");
Selection.activeGameObject = chart;
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 814d9aefe4a62fc41ac80aea44c88ee5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: