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(); if (tmpTexts != null && tmpTexts.Count > 0) { foreach (var tmpText in tmpTexts) { var languageItem = tmpText.transform.GetComponentInChildren(); if (languageItem == null) { var asset = AssetDatabase.LoadAssetAtPath( "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(); if (tmpTexts != null && tmpTexts.Count > 0) { foreach (var tmpText in tmpTexts) { var languageItem = tmpText.transform.GetComponentInChildren(); 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 } }