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

111 lines
3.9 KiB
C#
Raw Normal View History

2025-06-17 09:31:12 +08:00
using System.Collections.Generic;
2025-08-21 13:10:17 +08:00
using HK.Keyboard;
2025-06-17 09:31:12 +08:00
using Runtime.Helper;
using TMPro;
using UnityEditor;
using UnityEngine;
2025-08-21 13:10:17 +08:00
using UnityEngine.UI;
2025-06-17 09:31:12 +08:00
namespace HK.Editor
{
public class UIToolEditor : UnityEditor.Editor
{
2025-08-21 13:10:17 +08:00
#region Keyborad
[MenuItem("GameObject/ZTool/KeyboradTool/自动添加Button")]
public static void AutoGetInputKey()
{
foreach (var go in Selection.gameObjects)
{
var tmpTexts = go.transform.FindChildDeeps<KeyBind>();
if (tmpTexts != null && tmpTexts.Count > 0)
{
foreach (var tmpText in tmpTexts)
{
tmpText.button = tmpText.GetComponent<Button>();
}
EditorUtility.SetDirty(go);
Debug.Log("自动绑定数据 完成");
}
else
{
Debug.Log("未找到Text组件");
}
}
}
#endregion
2025-06-17 09:31:12 +08:00
#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
}
}