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); //重要(有点像应用设置的意思)
        }
    }
}

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

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

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

NGUI 动态改变Label字体

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

UGUI文本字体颜色和大小等代码修改

一直没有时间写东西,学习了很多的东西总是没有时间来记录。 下面记录一个新发现的功能,UGUI如何在同一个text将字体改为不通的颜色和大小等。 直接上效果图: 从图中的效果可以看到,属性面板里也可...
  • alayeshi
  • alayeshi
  • 2016年07月06日 20:57
  • 14940

NGUI 3.5教程(六)Font字体

字体是UI非常重要的一部分。今天用NGUI 3.5,制作一下字体。 下面是我
  • chenggong2dm
  • chenggong2dm
  • 2014年06月17日 11:49
  • 10732

(NGUI)label设置局部字体大小

最近项目里有个需求,在设计剧情对话的时候需要逐个字的播放一个label里的剧情对话,当然这不是关键,关键是策划需求剧情内的某些字段比如名字等需要区别于剧情对话的字体的大小。当然有人会说直接拼label...
  • helric7856
  • helric7856
  • 2016年06月02日 17:42
  • 617

unity 中更换 脚本编辑器 / 更改字体

更改编译器 菜单- Edit - preference - ExternalTool - External script Editor.browse 更改字体 Tools - Optio...
  • chuan403082010
  • chuan403082010
  • 2017年03月13日 13:53
  • 1251

Unity3D脚本中文字符乱码的解决方案

用Unity这么久,一直就听别人说遇到在脚本里面用中文字符会乱码的问题。这些问题在Visual Studio比较少,通常都是在MonoDevelop上会出现,甚至在Monodevelop编辑器,写了中...
  • andyhebear
  • andyhebear
  • 2016年03月09日 10:15
  • 4258

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

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

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

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

NGUI可用的中文字体

  • 2013年01月30日 14:30
  • 1.83MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity一键修改NGUI字体的编辑器脚本
举报原因:
原因补充:

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