[Unity学习教程] 【Unity3D编辑器扩展】Unity3D中办理Text的清晰度标题

[复制链接]
查看725 | 回复0 | 2023-8-16 16:34:26 | 显示全部楼层 |阅读模式 来自 中国北京
保举阅读
  

  • CSDN主页
  • GitHub开源地点
  • Unity3D插件分享
  • 简书地点
  • 我的个人博客
  各人好,我是佛系工程师☆舒适的小魔龙☆,不定时更新Unity开辟本事,以为有效记得一键三连哦。
一、前言

在步伐开辟中,经常会遇到Unity中Text文字不清晰的标题,大多数情况是由于字体太小,造成了在分辨率下的文字的暗昧标题,如下图所示:

虽然在编辑器中Scene视图中看起来效果还行,但是,到Game视图就有点失真了。
二、办理方案

遇到上述标题,比较简单的方式是增长字号巨细,但是字号巨细增长之后在当前的宽高下就会显示不全,但是增大宽高后团体的结构就不对了,就必要调解缩放,总结一下就是:


  • (1)增长字号巨细,为了方便就增长一倍
  • (2)调解宽高为一倍巨细
  • (3)调解缩放为原来的一半
原来的Text:

调解后:

可以显着看出来区别:

三、做成小工具

3-1、做成工具

为了方便写了一个小脚本,可以快速的完成这些操作,新建脚本ReplaceTheFont.cs,将脚本放到Editor文件夹中,双击打开脚本修改代码:
  1. using UnityEditor;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. public class ReplaceTheFont : Editor
  5. {
  6.     [MenuItem("Tools/优化Text清晰度")]
  7.     public static void UpdateText()
  8.     {
  9.         //寻找Hierarchy面板下所有的Text
  10.         var tArray = Resources.FindObjectsOfTypeAll(typeof(Text));
  11.         for (int i = 0; i < tArray.Length; i++)
  12.         {
  13.             Text t = tArray[i] as Text;
  14.             //记录对象
  15.             Undo.RecordObject(t, t.gameObject.name);
  16.             t.fontSize = t.fontSize * 2;
  17.             t.GetComponent<RectTransform>().sizeDelta = new Vector2(t.GetComponent<RectTransform>().rect.width * 2, t.GetComponent<RectTransform>().rect.height * 2);
  18.             t.GetComponent<RectTransform>().localScale = new Vector3(t.GetComponent<RectTransform>().localScale.x / 2, t.GetComponent<RectTransform>().localScale.y / 2, t.GetComponent<RectTransform>().localScale.z / 2);
  19.             //设置已改变
  20.             EditorUtility.SetDirty(t);
  21.         }
  22.         Debug.Log("完成");
  23.     }
  24. }
复制代码
效果,完成了:

3-2、根据粉丝的代码进行了优化

如图:

代码更新后:
  1. using UnityEditor;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. public class ReplaceTheFont : Editor
  5. {
  6.         [MenuItem("Tools/优化Text清晰度")]
  7.         public static void UpdateText()
  8.         {
  9.             //寻找Hierarchy面板下所有的Text
  10.             var tArray = Resources.FindObjectsOfTypeAll(typeof(Text));
  11.             for (int i = 0; i < tArray.Length; i++)
  12.             {
  13.                 Text t = tArray[i] as Text;
  14.                 //记录对象
  15.                 Undo.RecordObject(t, t.gameObject.name);
  16.                 t.fontSize = t.fontSize * 2;
  17.                 //t.GetComponent<RectTransform>().sizeDelta = new Vector2(t.GetComponent<RectTransform>().rect.width * 2, t.GetComponent<RectTransform>().rect.height * 2);
  18.                 SetRectTransformSize(t.GetComponent<RectTransform>(), t.GetComponent<RectTransform>().sizeDelta);
  19.                 t.GetComponent<RectTransform>().localScale = new Vector3(t.GetComponent<RectTransform>().localScale.x / 2, t.GetComponent<RectTransform>().localScale.y / 2, t.GetComponent<RectTransform>().localScale.z / 2);
  20.                 //设置已改变
  21.                 EditorUtility.SetDirty(t);
  22.             }
  23.             Debug.Log("完成");
  24.         }
  25.         public static void SetRectTransformSize(RectTransform rt, Vector2 size)
  26.         {
  27.             Vector2 oldSize = rt.rect.size;
  28.             Vector2 deltaSize = size - oldSize;
  29.             rt.offsetMin = rt.offsetMin - new Vector2(deltaSize.x * rt.pivot.x, deltaSize.y * rt.pivot.y);
  30.             rt.offsetMax = rt.offsetMax + new Vector2(deltaSize.x * (1f - rt.pivot.x), deltaSize.y * (1f - rt.pivot.y));
  31.         }
  32. }
复制代码
四、跋文

本日写了提高Text清晰度的小工具,渴望可以帮到各人,提升效率。
有什么标题,及时联系我。

你的点赞就是对博主的支持,有标题记得留言:
博主主页有联系方式。
博主另有跟多宝藏文章等待你的发掘哦:
专栏方向简介Unity3D开辟小游戏小游戏开辟教程分享一些使用Unity3D引擎开辟的小游戏,分享一些制作小游戏的教程。Unity3D从入门到进阶入门从自学Unity中获取灵感,总结从零开始学习Unity的蹊径,有C#和Unity的知识。Unity3D之UGUIUGUIUnity的UI体系UGUI全分析,从UGUI的底子控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。Unity3D之读取数据文件读取使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。Unity3D之数据聚集数据聚集数组聚集:数组、List、字典、堆栈、链表等数据聚集知识分享。Unity3D之VR/AR(假造仿真)开辟假造仿真总结博主工作常见的假造仿真需求进行案例解说。Unity3D之插件插件重要分享在Unity开辟中用到的一些插件使用方法,插件先容等Unity3D之一样平常开辟一样平常记载重要是博主一样平常开辟中用到的,用到的方法本事,开辟思绪,代码分享等Unity3D之一样平常BUG一样平常记载记载在使用Unity3D编辑器开辟项目过程中,遇到的BUG和坑,让厥后人可以有些参考。
来源:https://blog.csdn.net/q764424567/article/details/128662973
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

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

本版积分规则