Framwork/Assets/Scripts/Editor/UI/UIToolEditor.cs

82 lines
3.0 KiB
C#

using System.Collections.Generic;
using Runtime.Helper;
using TMPro;
using UnityEditor;
using UnityEngine;
namespace HK.Editor
{
public class UIToolEditor : UnityEditor.Editor
{
#region Prefab
[MenuItem("GameObject/ZTool/TextTool/自动添加LanguageChange")]
public static void AutoLoadLanguageItem()
{
foreach (var go in Selection.gameObjects)
{
var tmpTexts = go.transform.FindChildDeeps<TMP_Text>();
if (tmpTexts != null && tmpTexts.Count > 0)
{
foreach (var tmpText in tmpTexts)
{
var languageItem = tmpText.transform.GetComponentInChildren<LanguageItem>();
if (languageItem == null)
{
var asset = AssetDatabase.LoadAssetAtPath<GameObject>(
"Assets/Res/Prefab/LanguageChange.prefab");
var gameObject = (GameObject)PrefabUtility.InstantiatePrefab(asset);
gameObject.name = asset.name;
gameObject.transform.SetParent(tmpText.transform);
}
else
{
Debug.Log($"{tmpText.name} 已存在 LanguageItem 组件");
}
}
EditorUtility.SetDirty(go);
Debug.Log("自动绑定数据 完成");
}
else
{
Debug.Log("未找到Text组件");
}
}
}
[MenuItem("GameObject/ZTool/TextTool/自动断开LanguageChange连接")]
public static void AutoUnpackPrefab()
{
foreach (var go in Selection.gameObjects)
{
var tmpTexts = go.transform.FindChildDeeps<TMP_Text>();
if (tmpTexts != null && tmpTexts.Count > 0)
{
foreach (var tmpText in tmpTexts)
{
var languageItem = tmpText.transform.GetComponentInChildren<LanguageItem>();
if (languageItem != null)
{
if (languageItem != null && PrefabUtility.IsPartOfPrefabInstance(languageItem))
{
PrefabUtility.UnpackPrefabInstance(languageItem.gameObject, PrefabUnpackMode.Completely,
InteractionMode.UserAction);
Debug.Log($"已断开 {tmpText.name} 与预制体的连接");
}
}
}
EditorUtility.SetDirty(go);
Debug.Log("自动绑定数据 完成");
}
else
{
Debug.Log("未找到Text组件");
}
}
}
#endregion
}
}