批量更换选中对象及子对象上的Text组件字体

       以前项目中,负责整个项目的交互设计包括UI制作等等。制作UI时,有时候要批量更换UI元素上的字体。于是就写了一个编辑器工具,使用方法是先在“Hierarchy”面板中选中需要更换字体的UI根节点,然后在“MyTools”下面找到“ChangeFont”,点击即可弹出窗口,然后在窗口中选中字体,点击按钮“Are You Sure ? ”完成更换。更换后,会在Console面板输出哪些对象更换成功。

       下面上代码


using UnityEngine;
using UnityEngine.UI;
using UnityEditor;
/// <summary>
/// 修改制定对象上的Text组件中的字体
/// </summary>
public class ChangeFonts : EditorWindow
{

    //用来存储选择的字体
    static Font font;

    [MenuItem("MyTools/ChangeFont")]
    //创建窗口
    static void ChangeTheFonts()
    {
        Rect wr = new Rect(0, 0, 250, 100);
        ChangeFonts window = (ChangeFonts)GetWindowWithRect(typeof(ChangeFonts), wr, true, "修改字体");
        window.Show();
    }

    void OnGUI()
    {
        //绘制字体选择框
        font = EditorGUILayout.ObjectField("选择字体", font, typeof(Font), true) as Font;

        //绘制按钮且编辑点击按钮执行功能
        if (GUILayout.Button("Are You Sure ? ", GUILayout.Width(100)))
        {
            GameObject go = Selection.activeGameObject;
            Text[] texts = go.GetComponentsInChildren<Text>();
            //遍历找到的Text组件,并更换字体
            foreach (Text item in texts)
            {
                item.font = font;
                Debug.Log("将" + item.gameObject.name + "的Text组件的字体更换为:" + font.name + "!");
            }
        }
    }

    //刷新窗口
    void OnInspectorUpdate()
    {
        this.Repaint();
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值