Files
TaiWan/Assets/Roaming/Editor/JsonGenerate.cs
2025-10-31 15:20:38 +08:00

91 lines
3.1 KiB
C#

using UnityEngine;
using UnityEditor;
using System.Linq;
using System.Collections.Generic;
using System.Text;
public class JsonGenerate : EditorWindow
{
[MenuItem("Tools/JsonGenerate Tool")] //在Unity菜单中添加一个名为“Rename Tool”的工具选项
public static void ShowWindow()
{
EditorWindow.GetWindow(typeof(JsonGenerate));
}
string jsonText;
void OnGUI()
{
GUILayout.Label("Object Renaming Tool", EditorStyles.boldLabel); //在编辑器窗口中显示标题
jsonText = EditorGUILayout.TextField("Json:", jsonText); //添加文本框,以便用户输入前缀
if (GUILayout.Button("Generate Json String"))
{
GenerateJsonString(); //添加一个按钮,以便用户单击以开始对选择的物体进行重命名
}
}
StringBuilder sbJson = new StringBuilder();
private void GenerateJsonString()
{
if (Selection.gameObjects.Length > 0)
{
//sbJson.Append("{\"target\": [");
var result = Selection.gameObjects.Where(obj=>obj.activeSelf).OrderBy(obj => obj.transform.GetSiblingIndex()).ToList();
for (int i = 0; i < result.Count; i++)
{
if (result[i].transform.childCount == 0)
{
sbJson.Append("{");
sbJson.AppendFormat("\"ObjectID\": \"{0}\",\"ImageName\": \"{0}.png\",\"Title\":\"\"", result[i].name);
sbJson.Append("}");
}
else
{
for (int j = 0; j < result[i].transform.childCount; j++)
{
sbJson.Append("{");
sbJson.AppendFormat("\"ObjectID\": \"{0}\",\"Type\": 8,\"Index\": {1},\"Title\":\"\",",
result[i].transform.GetChild(j).name, j);
if (j == 0)
{
string tmp = null;
for (int k = 0; k < result[i].transform.childCount; k++)
{
tmp += string.Format("\"{0}.png\"", result[i].transform.GetChild(k).name);
if (k != result[i].transform.childCount - 1)
{
tmp += ",";
}
}
sbJson.AppendFormat("\"DataDetails\":[{0}]", tmp);
}
else
{
sbJson.AppendFormat("\"ParentID\":\"{0}\"", result[i].transform.GetChild(0).name);
}
sbJson.Append("}");
if (j != result[i].transform.childCount - 1)
{
sbJson.Append(",");
}
}
}
if (i != result.Count - 1)
{
sbJson.Append(",");
}
}
//sbJson.Append("]}");
jsonText = sbJson.ToString();
}
}
}