Unity一键修改NGUI字体的编辑器脚本

原创 2017年06月07日 17:21:46

本人小白一枚,装模做样的学别人写这东西,也是第一次写,目的就在于害怕以后忘了(尴尬),所以当笔记记下来,要是有些不对、不好、不规范的地方,希望帮忙指出来,我也能多学到一点东西,向前方前进一点。
项目要求:要更改项目的字体,一个一个改怕是要累死,所以上网搜了一下相关资料,根据别人写的代码,自己又整理了一下(第一次写编辑器脚本,只能照着别人的改改了,写完之后变得熟悉一点了,说明我前进了一小步(●’◡’●)),项目用的NGUI,要是UGUI稍微改动一下也能用,上代码:

using UnityEngine;
using UnityEditor;

/// <summary>
/// 根据鼠标点中的对象批量修改所有UI字体脚本,脚本位于Editor文件夹
/// </summary>
public class ChangeFontWindow : EditorWindow
{
    //是否改变当前字体
    private static bool isChangFont = false;

    //当前字体
    private static Font curFont;

    //是否改变字体类型
    private static bool isChangeStyle = false;

    //字体类型
    private static FontStyle curFontStyle;

    //是否增加字体大小
    private static bool isExpandSize = false;

    //字体大小增加的值
    private static int fontSizeDelta = 0;

    //window菜单下
    [MenuItem("Window/Change Font")]
    private static void ShowWindow()
    {
        ChangeFontWindow cw = GetWindow<ChangeFontWindow>(true, "修改字体");
        //(强迫症,看着舒服)
        cw.minSize = new Vector2(310, 200);
        cw.maxSize = new Vector2(310, 300);
    }

    private void OnGUI()
    {
        //向下空出5个像素
        GUILayout.Space(5);

        //创建是否改变当前字体开关
        isChangFont = EditorGUILayout.Toggle("是否改变当前字体", isChangFont);
        GUILayout.Space(5);

        //如果改变当前字体则创建字体文件选择框
        if(isChangFont)
        {
            curFont = (Font)EditorGUILayout.ObjectField("目标字体", curFont, typeof(Font), true);
            GUILayout.Space(5);
        }

        //创建是否改变字体类型开关
        isChangeStyle = EditorGUILayout.Toggle("是否改变字体类型", isChangeStyle);
        GUILayout.Space(5);

        //如果改变,则创建字体类型的枚举下拉框
        if(isChangeStyle)
        {
            curFontStyle = (FontStyle)EditorGUILayout.EnumPopup("字体类型", curFontStyle);
            GUILayout.Space(5);
        }

        //创建是否增加字体大小的开关
        isExpandSize = EditorGUILayout.Toggle("是否增加字体大小", isExpandSize);
        GUILayout.Space(5);

        //如果增加字体大小则创建增加字体大小值的滑条
        if(isExpandSize)
        {
            fontSizeDelta = (int)EditorGUILayout.Slider("增加字体大小的值", fontSizeDelta, -200, 200);
            GUILayout.Space(5);
        }

        //创建确认按钮
        if(GUILayout.Button("确认修改", GUILayout.Height(30), GUILayout.Width(300)))
        {
            Change();
        }
    }

    public static void Change()
    {
        //如果鼠标没有选中物体则返回
        if(Selection.objects == null || Selection.objects.Length == 0) { return; }

        //获取点中对象(包括子目录)所有UILabel组件
        Object[] labels = Selection.GetFiltered(typeof(UILabel), SelectionMode.Deep);

        //赋值
        foreach(Object item in labels)
        {
            UILabel label = (UILabel)item;

            if(isChangFont) { label.trueTypeFont = curFont; }

            if(isChangeStyle) { label.fontStyle = curFontStyle; }

            if(isExpandSize) { label.fontSize += fontSizeDelta; }

            EditorUtility.SetDirty(item); //重要(有点像应用设置的意思)
        }
    }
}

搞定收工,根据需求再添加一下要修改的其他属性也可以

相关文章推荐

Unity3D 【编辑器扩展】一键批量修改预设UGUI Text字体

我们做项目的时候经常会遇到要换个字体的工作情况,比如美工同学觉着字体不好看或者要做其它语言版本什么的。遇到这种情况我们总不能一个标签一个标签的去找到它们把字体换了,累不累就不说了,万一漏了也是麻烦事。...

NGUI 动态改变Label字体

这篇文章的含金量可能并不是很高,也许几乎是一点没有,因为很多游戏中不会这么无聊的在游戏过程中还要改变字体,基本都是静态的图片或者文本就可以了。之所以写这篇文章是为了熟悉一下C#中如何定义getter与...

【转】Unity中,使用Ngui 的默认字体Arial,显示出错;附带字体替换脚本

【原贴地址已失效  转载过来备用】 Unity工程中的动态字体使用很方便,在一开始的工程中,为了减小游戏包的大小,我们使用的是Unity内置的默认Arial字体,但是在游戏上线测试后,很多玩家反馈个...
  • l8shi
  • l8shi
  • 2016年06月21日 13:49
  • 1552

unity的ngui的字体变形问题

使用ngui3.5.5版本的时候发现,任何字体设置粗体模式

扩展Unity3d编辑器,批量修改Label字体颜色

在做游戏使用NGUI过程中,经常会遇到更改UILabel字体的颜色,手动更改Label字体颜色不仅效率很低,而且有部分Label处于未激活状态,无法找到全部Label。为此需要扩展Unity3d编辑器...

【Unity技巧】自定义消息框(弹出框)

写在前面 这一篇我个人认为还是很常用的,一开始也是实习的时候学到的,所以我觉得实习真的是一个快速学习工程技巧的途径。 提醒:这篇教程比较复杂,如果你不熟悉NGUI、iTween、C#的回调...

Unity-【编辑器扩展】一键批量修改预设UGUI Text字体

我们做项目的时候经常会遇到要换个字体的工作情况,比如美工同学觉着字体不好看或者要做其它语言版本什么的。遇到这种情况我们总不能一个标签一个标签的去找到它们把字体换了,累不累就不说了,万一漏了也是麻烦事。...

[Unity3D] Dynamic Font for NGUI 2.5.0c,动态字体脚本支持NGUI最新版本

基于NGUI最新版2.5.0c修改UIFont和其Inspector脚本,支持动态字体 使用步骤: 1、导入最新版本的NGUI包 2、导入U3D_DynamicFont_UIFont_NGUI2...
  • chiuan
  • chiuan
  • 2013年04月01日 14:36
  • 8784
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity一键修改NGUI字体的编辑器脚本
举报原因:
原因补充:

(最多只允许输入30个字)