查看: 1083|回复: 0
打印 上一主题 下一主题

[其他] Unity3D 一键改变UI字体

[复制链接]
may    

8830

主题

81

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
52352
精华
343

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2016-3-25 00:11:07 |只看该作者 |倒序浏览

我们做项目的时候经常会遇到要换个字体的工作情况,比如美工同学觉着字体不好看或者要做其它语言版本什么的。遇到这种情况我们总不能一个标签一个标签的去找到它们把字体换了,累不累就不说了,万一漏了也是麻烦事。
作为一名高贵的游戏开发工程师,怎么能把时间经历都浪费在这些小事上,所以我们要时刻考虑到什么工作可以通过代码让电脑代替自己的工。
下面这个类是个编辑器工具类,都在代码里~
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEditor;
  4. using UnityEngine.UI;

  5. public class ChangeFontWindow : EditorWindow
  6. {
  7.     [MenuItem("DuanTools/换字体")]
  8.     public static void Open()
  9.     {
  10.         EditorWindow.GetWindow(typeof(ChangeFontWindow));
  11.     }

  12.     public Font toChange;
  13.     static Font toChangeFont;

  14.     void OnGUI()
  15.     {
  16.         toChange = (Font)EditorGUILayout.ObjectField(toChange, typeof(Font), true, GUILayout.MinWidth(100f));
  17.         toChangeFont = toChange;
  18.         if (GUILayout.Button("变变变!"))
  19.         {
  20.             Change();
  21.         }
  22.     }

  23.     public static void Change()
  24.     {
  25.         //获取所有UILabel组件
  26.         //如果是UGUI讲UILabel换成Text就可以
  27.         Object[] labels = Selection.GetFiltered(typeof(UILabel), SelectionMode.Deep);
  28.         foreach (Object item in labels)
  29.         {
  30.             //如果是UGUI讲UILabel换成Text就可以
  31.             UILabel label = (UILabel)item;
  32.             label.trueTypeFont = toChangeFont;
  33.             //label.font = toChangeFont;(UGUI)
  34.             Debug.Log(item.name + ":" + label.text);
  35.         }
  36.     }
  37. }
复制代码
111116v5e323sks25ieekw.png.thumb.jpg
下面是使用方法,首先打开刚才制作的工具窗口,然后选择要穿的新字体。
然后去场景选择一组UI的最父级。
最后点击变变变,大功告成~!
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-8-1 22:45 , Processed in 0.061609 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部