赞
踩
推荐阅读
大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。
在程序开发中,常常会遇到Unity中Text文字不清晰的问题,大多数情况是因为字体太小,造成了在分辨率下的文字的模糊问题,如下图所示:
虽然在编辑器中Scene视图中看起来效果还行,但是,到Game视图就有点失真了。
遇到上述问题,比较简单的方式是增加字号大小
,但是字号大小增加之后在当前的宽高下就会显示不全,但是增大宽高后整体的布局就不对了,就需要调整缩放,总结一下就是:
原来的Text:
调整后:
可以明显看出来区别:
为了方便写了一个小脚本,可以快速的完成这些操作,新建脚本ReplaceTheFont.cs,将脚本放到Editor文件夹中,双击打开脚本修改代码:
using UnityEditor; using UnityEngine; using UnityEngine.UI; public class ReplaceTheFont : Editor { [MenuItem("Tools/优化Text清晰度")] public static void UpdateText() { //寻找Hierarchy面板下所有的Text var tArray = Resources.FindObjectsOfTypeAll(typeof(Text)); for (int i = 0; i < tArray.Length; i++) { Text t = tArray[i] as Text; //记录对象 Undo.RecordObject(t, t.gameObject.name); t.fontSize = t.fontSize * 2; t.GetComponent<RectTransform>().sizeDelta = new Vector2(t.GetComponent<RectTransform>().rect.width * 2, t.GetComponent<RectTransform>().rect.height * 2); t.GetComponent<RectTransform>().localScale = new Vector3(t.GetComponent<RectTransform>().localScale.x / 2, t.GetComponent<RectTransform>().localScale.y / 2, t.GetComponent<RectTransform>().localScale.z / 2); //设置已改变 EditorUtility.SetDirty(t); } Debug.Log("完成"); } }
效果,完成了:
如图:
代码更新后:
using UnityEditor; using UnityEngine; using UnityEngine.UI; public class ReplaceTheFont : Editor { [MenuItem("Tools/优化Text清晰度")] public static void UpdateText() { //寻找Hierarchy面板下所有的Text var tArray = Resources.FindObjectsOfTypeAll(typeof(Text)); for (int i = 0; i < tArray.Length; i++) { Text t = tArray[i] as Text; //记录对象 Undo.RecordObject(t, t.gameObject.name); t.fontSize = t.fontSize * 2; //t.GetComponent<RectTransform>().sizeDelta = new Vector2(t.GetComponent<RectTransform>().rect.width * 2, t.GetComponent<RectTransform>().rect.height * 2); SetRectTransformSize(t.GetComponent<RectTransform>(), t.GetComponent<RectTransform>().sizeDelta); t.GetComponent<RectTransform>().localScale = new Vector3(t.GetComponent<RectTransform>().localScale.x / 2, t.GetComponent<RectTransform>().localScale.y / 2, t.GetComponent<RectTransform>().localScale.z / 2); //设置已改变 EditorUtility.SetDirty(t); } Debug.Log("完成"); } public static void SetRectTransformSize(RectTransform rt, Vector2 size) { Vector2 oldSize = rt.rect.size; Vector2 deltaSize = size - oldSize; rt.offsetMin = rt.offsetMin - new Vector2(deltaSize.x * rt.pivot.x, deltaSize.y * rt.pivot.y); rt.offsetMax = rt.offsetMax + new Vector2(deltaSize.x * (1f - rt.pivot.x), deltaSize.y * (1f - rt.pivot.y)); } }
今天写了提高Text清晰度的小工具,希望可以帮到大家,提升效率。
有什么问题,及时联系我。
你的点赞就是对博主的支持,有问题记得留言:
博主主页有联系方式。
博主还有跟多宝藏文章等待你的发掘哦:
专栏 | 方向 | 简介 |
---|---|---|
Unity3D开发小游戏 | 小游戏开发教程 | 分享一些使用Unity3D引擎开发的小游戏,分享一些制作小游戏的教程。 |
Unity3D从入门到进阶 | 入门 | 从自学Unity中获取灵感,总结从零开始学习Unity的路线,有C#和Unity的知识。 |
Unity3D之UGUI | UGUI | Unity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。 |
Unity3D之读取数据 | 文件读取 | 使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。 |
Unity3D之数据集合 | 数据集合 | 数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。 |
Unity3D之VR/AR(虚拟仿真)开发 | 虚拟仿真 | 总结博主工作常见的虚拟仿真需求进行案例讲解。 |
Unity3D之插件 | 插件 | 主要分享在Unity开发中用到的一些插件使用方法,插件介绍等 |
Unity3D之日常开发 | 日常记录 | 主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等 |
Unity3D之日常BUG | 日常记录 | 记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。