155 lines
5.0 KiB
C#
Raw Normal View History

2025-09-08 14:51:28 +08:00
#define Graph_And_Chart_PRO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEditor;
using UnityEngine;
namespace ChartAndGraph
{
partial class EditorMenu
{
private static void InstanciateCanvas(string path)
{
Canvas[] canvases = GameObject.FindObjectsOfType<Canvas>();
if (canvases == null || canvases.Length == 0)
{
EditorUtility.DisplayDialog("No canvas in scene", "Please add a canvas to the scene and try again", "Ok");
return;
}
Canvas canvas = null;
foreach(Canvas c in canvases)
{
if(c.transform.parent == null)
{
canvas = c;
break;
}
}
if (canvas == null)
{
EditorUtility.DisplayDialog("No canvas in scene", "Please add a canvas to the scene and try again", "Ok");
return;
}
GameObject obj = Resources.Load<GameObject>(path);
GameObject newObj = (GameObject)GameObject.Instantiate(obj);
newObj.transform.SetParent(canvas.transform,false);
newObj.name = newObj.name.Replace("(Clone)","");
Undo.RegisterCreatedObjectUndo(newObj, "Create Object");
}
[MenuItem("Tools/Charts/Clear All")]
public static void ClearChartGarbage()
{
ChartItem[] children = GameObject.FindObjectsOfType<ChartItem>();
for (int i = 0; i < children.Length; ++i)
{
if (children[i] != null)
{
ChartCommon.SafeDestroy(children[i].gameObject);
}
}
}
[MenuItem("Tools/Charts/Fix prefabs")]
public static void ClearPrefabs()
{
if (EditorUtility.DisplayDialog("Warning", "Make sure to backup your project before calling Fix Prefabs", "OK", "Cancel") == false)
return;
string[] prefabs = AssetDatabase.FindAssets("t:prefab");
foreach (var guid in prefabs)
{
var path = AssetDatabase.GUIDToAssetPath(guid);
// Load the contents of the Prefab Asset.
try
{
GameObject contentsRoot = UnityEditor.PrefabUtility.LoadPrefabContents(path);
if (contentsRoot.GetComponentInChildren<AnyChart>() != null)
{
Debug.Log("Fixing " + path);
bool save = false;
// Modify Prefab contents.
foreach (var item in contentsRoot.GetComponentsInChildren<ChartItem>())
{
if (item == null)
continue;
if (item.gameObject != null)
{
save = true;
GameObject.DestroyImmediate(item.gameObject);
}
}
if (save)
{
Debug.Log("Saving " + path);
UnityEditor.PrefabUtility.SaveAsPrefabAsset(contentsRoot, path);
}
else
{
Debug.Log("No change to prefab " + path);
}
}
UnityEditor.PrefabUtility.UnloadPrefabContents(contentsRoot);
}
catch (Exception)
{
Debug.Log("Failed " + path);
}
}
}
[MenuItem("Tools/Charts/Radar/Canvas")]
public static void AddRadarChartCanvas()
{
InstanciateCanvas("MenuPrefabs/2DRadar");
}
[MenuItem("Tools/Charts/Bar/Canvas/Simple")]
public static void AddBarChartSimpleCanvas()
{
InstanciateCanvas("MenuPrefabs/BarCanvasSimple");
}
[MenuItem("Tools/Charts/Bar/Canvas/Multiple Groups")]
public static void AddBarChartMultipleCanvas()
{
InstanciateCanvas("MenuPrefabs/BarCanvasMultiple");
}
[MenuItem("Tools/Charts/Torus/Canvas")]
public static void AddTorusChartCanvas()
{
InstanciateCanvas("MenuPrefabs/TorusCanvas");
}
[MenuItem("Tools/Charts/Pie/Canvas")]
public static void AddPieChartCanvas()
{
InstanciateCanvas("MenuPrefabs/PieCanvas");
}
[MenuItem("Tools/Charts/Graph/Canvas")]
public static void AddGraphMultiple()
{
InstanciateCanvas("MenuPrefabs/GraphMultiple");
}
[MenuItem("Tools/Charts/Legend")]
public static void AddChartLegend()
{
InstanciateCanvas("MenuPrefabs/Legend");
}
}
}