少年修仙传客户端基础资源
hch
2025-03-31 508fefb8576351ebdca91a982a7d12daf0cda655
0312 替换层次视图中预制体的文本或图片
2个文件已添加
144 ■■■■■ 已修改文件
Assets/Editor/Tool/ChangeTextAndImage.cs 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/ChangeTextAndImage.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/ChangeTextAndImage.cs
New file
@@ -0,0 +1,133 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEngine.UI;
public class ChangeTextAndImage : EditorWindow {
    [MenuItem("程序/替换层次视图中预制体的文本或图片")]
    public static void Open()
    {
        EditorWindow.GetWindow(typeof(ChangeTextAndImage));
    }
    static GameObject tagetObj;
    void OnGUI()
    {
        GUILayout.Label("Hierarchy 层次视图中的预制体");
        if (GUILayout.Button("将Text更换为TextEx"))
        {
            ChangeText();
        }
        if (GUILayout.Button("将Image更换为ImageEx"))
        {
            ChangeImage();
        }
    }
    void ChangeText()
    {
        //将指定的tagetObj预制体中的所有Text更换为TextEx
        //Selection.activeObject;
        tagetObj = Selection.activeObject as GameObject;
        if (tagetObj == null)
        {
            Debug.LogError("请将预制体拖到Hierarchy 层次视图 并选中");
            return;
        }
        Text[] texts = tagetObj.GetComponentsInChildren<Text>(true);
        //将Text[]转成 List<GameObject>
        List<GameObject> golist = new List<GameObject>();
        foreach (var item in texts)
        {
            golist.Add(item.gameObject);
        }
        for (int i = 0; i < golist.Count; i++)
        {
            var go = golist[i];
            Text text = go.GetComponent<Text>();
            if (text as TextEx != null)
            {
                continue;
            }
            var textContent = text.text;
            var textFont = text.font;
            var textFontSize = text.fontSize;
            //删除Text
            DestroyImmediate(text);
            TextEx textEx = go.AddMissingComponent<TextEx>();
            textEx.text = textContent;
            textEx.font = textFont;
            textEx.fontSize = textFontSize;
            textEx.raycastTarget = false;
            textEx.alignment = TextAnchor.MiddleCenter;
            textEx.horizontalOverflow = HorizontalWrapMode.Wrap;
            textEx.verticalOverflow = VerticalWrapMode.Truncate;
            textEx.resizeTextForBestFit = true;
            textEx.resizeTextMinSize = 10;
            textEx.resizeTextMaxSize = textFontSize;
        }
    }
    void ChangeImage()
    {
        //将指定的tagetObj预制体中的所有Image更换为ImageEx
        //Selection.activeObject;
        tagetObj = Selection.activeObject as GameObject;
        if (tagetObj == null)
        {
            Debug.LogError("请将预制体拖到Hierarchy 层次视图 并选中");
            return;
        }
        Image[] images = tagetObj.GetComponentsInChildren<Image>(true);
        //将Image[]转成 List<GameObject>
        List<GameObject> golist = new List<GameObject>();
        foreach (var item in images)
        {
            golist.Add(item.gameObject);
        }
        for (int i = 0; i < golist.Count; i++)
        {
            var go = golist[i];
            Image image = go.GetComponent<Image>();
            if (image as ImageEx != null)
            {
                continue;
            }
            var imageSprite = image.sprite;
            var imageColor = image.color;
            //删除Image
            DestroyImmediate(image);
            ImageEx imageEx = go.AddMissingComponent<ImageEx>();
            imageEx.sprite = imageSprite;
            imageEx.raycastTarget = false;
        }
    }
}
Assets/Editor/Tool/ChangeTextAndImage.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c4e1e9fc7ce24fb4f925ab09bee693a8
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: