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

来源:互联网 发布:飞书互动 知乎 编辑:程序博客网 时间:2024/05/22 10:47

       以前项目中,负责整个项目的交互设计包括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();    }}


阅读全文
1 0
原创粉丝点击