Unity中如何调整GUI.Label的字体大小、字体样式及颜色?
嘿,我刚好熟悉Unity里这个旧GUI系统的用法,咱们一步步来解决你的问题~你现在用的是Unity传统的OnGUI系统里的GUI.Label,要调整字体大小、样式和颜色,其实用GUIStyle就能搞定,下面分点给你讲清楚:
一、先解决颜色问题(最快的两种方式)
临时修改全局GUI颜色
你可以在绘制Label之前,先设置GUI.color为你想要的颜色,绘制完之后记得还原成默认颜色,不然会影响其他GUI元素的显示:void OnGUI() { // 设置颜色为亮黄色(你可以换成Color.red、Color.blue等,或者自定义Color(0.8f,0.8f,0)这种) GUI.color = Color.yellow; GUI.Label(new Rect(630, 20, 300, 100), "Score: " + points); GUI.color = Color.white; // 还原回默认白色,避免影响其他UI }用GUIStyle指定颜色
这种方式更灵活,不会影响全局,后面讲字体的时候也会用到,先提一下:在GUIStyle的normal.textColor里设置颜色就行,后面会结合字体一起给代码示例。
二、调整字体大小和样式
要改字体大小和自定义字体,必须用到GUIStyle,这里有两种常用方法:
方法1:可视化设置(推荐,更方便调整)
第一步,在你的脚本里加一个公开的GUIStyle变量:
public GUIStyle scoreLabelStyle; // 公开到Inspector里
第二步,回到Unity编辑器,选中挂载这个脚本的对象,在Inspector里找到这个scoreLabelStyle变量,点击右边的小箭头,选择"Create New"创建一个新的样式。
第三步,在弹出的GUIStyle设置面板里,你可以:
- 在Font Size里输入想要的字号(比如30,这样就不会看不清了)
- 在Font下拉框里选择你导入的自定义字体(记得先把字体导入到项目里)
- 在Normal -> Text Color里设置文字颜色
第四步,修改你的Label绘制代码,把GUIStyle传进去:
void OnGUI() { // 确保样式不为空再绘制 if (scoreLabelStyle != null) { GUI.Label(new Rect(630, 20, 300, 100), "Score: " + points, scoreLabelStyle); } else { // 备用:如果样式没设置,用默认绘制 GUI.Label(new Rect(630, 20, 300, 100), "Score: " + points); } }
方法2:代码动态设置
如果不想在Inspector里设置,也可以在代码里直接创建并配置GUIStyle:
void OnGUI() { // 复制默认的Label样式作为基础 GUIStyle customScoreStyle = new GUIStyle(GUI.skin.label); // 设置字号 customScoreStyle.fontSize = 30; // 设置颜色 customScoreStyle.normal.textColor = Color.white; // 设置自定义字体(注意:字体要放在Resources文件夹下,不然Resources.Load找不到) customScoreStyle.font = Resources.Load<Font>("Fonts/MyCustomFont"); // 用自定义样式绘制Label GUI.Label(new Rect(630, 20, 300, 100), "Score: " + points, customScoreStyle); }
如果用自定义字体,记得把字体文件放到项目里的Resources文件夹(没有的话自己创建一个),路径要和Resources.Load里的对应。
最后小提醒
你原来的Rect参数是new Rect(630, 20, 300, 100),如果字号调大了,这个Rect的高度(100)可能不够,导致文字被截断,你可以适当把高度调大一点,比如改成150,这样文字就能完整显示啦~
备注:内容来源于stack exchange,提问作者user22436336

