Unity中3DText显示模糊不清的解决方案

在Unity中,当我们想要给3D物体一个文字说明时,使用Canvas下的Text虽然也能通过缩放实现,但是实现起来比较麻烦,改动的多,大小和位置也不容易控制。

此时就需要用到我们的3DText了,对于初次使用这个组件的“攻城狮”来说,会发现在Game场景中很模糊

具体修改操作如下:

此时,只需要选中当前3DText的物体,修改TextMesh组件下的Character Size和Font Size两个属性值。例如:

在这里,Character Size值越小,同时Font Size越大,字体就会显示的越大越清晰,具体调节根据自己的需要。小编修改后的效果如下。

以上皆为个人观点,仅供参考。

补充:解决Unity原生UI文字模糊的小技巧

很多人都觉得Unity原生UI(uGUI)的Text不好用,功能过分简单,而且还很模糊。比如题图中第一行Text使用了size =24的字号,边缘明显模糊了。因此,目前流行使用TextMeshPro来制作UI文字,甚至Unity把TextMeshPro都买下来内置到引擎了。

TextMeshPro功能确实强大,但一个劣势是不能直接识别字体文件,需要用户自己将字体文件转换成Atlas(也就是图片式的字符集)再使用。这对于英文字体非常简单,一共也就那么多个字符需要转换,但对于中文字体来说就很麻烦了,常用中文字集有3500和6500两个版本,转换耗时非常久。

对于对UI文字要求没那么高的用户来说(比如我),还是直接使用uGUI的Text更为方便,但这个模糊问题又很恼火。

我仔细研究了一下uGUI的Text,发现:这个模糊其实是显示字体时为了抗锯齿而出现的,不同字号的Text的边缘模糊程度如果用像素来衡量的话其实是一样的。比如题图第三行Text使用了size =128的字号,给人的感觉就好很多了(虽然其实边缘模糊绝对数值和第一行是一样的)。

这说明,如果我们能将大字号的Text缩小,那么这个缩小版就比小字号Text的边缘要清晰很多。

题图中第二行字同样使用size =128的字号,但同时设置Scale为0.2,这样其实际尺寸与第一行字差不多,但边缘模糊几乎不存在了,反而感觉有点太锐化了。

这样就比较完美地解决了uGUI文字模糊的问题,我们又可以开心地使用Text来制作UI了。

PS:uGUI Text的字号(size)最大只能设置到300,但我个人感觉已经够用了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • unity 如何获取Text组件里text内容的长度

    我就废话不多说了,大家还是直接看代码吧~ /// <summary> /// 计算字符串在指定text控件中的长度 /// </summary> /// <param name="message"></param> /// <returns></returns> int CalculateLengthOfText(string message,Text tex) { int totalLength = 0; Fon

  • unity里获取text中文字宽度并截断省略的操作

    前言 在unity的ugui中Text控件,有时我们会有各种各样的需求,比如类似html中css的text-overflow属性,希望一段文字如果不够长就全显示,如果特别长就截断并且后面加上例如-这种后缀. 好吧这样的需求在ugui里貌似没有现成的方法,如果有的话麻烦指点一下~ 实现 大概的思路就是 - 首先要能判断什么时候overflow - 并且支持加上后缀 那么text控件本来是支持overflow然后直接截断的,但是比较暴力,直接砍断,不能加后缀,并不满足我们的需求. 然后如果简单的通过

  • 基于自定义Unity生存期模型PerCallContextLifeTimeManager的问题

    PerThreadLifetimeManager的问题使用Unity内置的PerThreadLifetimeManager生存期模型时,其基于ThreadStatic的TLS(Thread Local Storage)设计,也就是说对于每个托管的ManagedThreadId,其会缓存已生成的对象实例. 由于CLR维护了托管线程池,使用过的线程并不会立即销毁,在需要的时候会继续复用.在类似ASP.NET PerCall或WCF PerCall条件下,当Call1在线程ManagedThreadI

  • Unity UGUI控制text文字间距

    Unity ugui相比ngui,提供的功能少之又少,好多特性得需要自己实现.真不知道unity写这个插件后来是不是就没有更新过.发了句牢骚.如果我想控制文字的显示间距,ngui 有两种办法.1:文字之间加空格.2:调节spacing 的x值. 但对于ugui,第二种方法却没有.以前我使用ngui,这种方法用的多了,也方便,因此很想也把它这个特性转到ugui上. 思考了半天,最终想出来了解决方法,以下是实现方式: 1.定义扩展效果类 [RequireComponent(typeof(Text))

  • Unity3D UI Text得分数字增加的实例代码

    Unity3D UGUI Text得分数字增加 代码 一.首先在Hierarchy中创建Text,并绑定脚本. using UnityEngine; using System.Collections; using UnityEngine.UI; **//导入资源库** public class Score : MonoBehaviour { public static Text txt; **//定义静态变量名以用于其他脚本内的引用** public static float x = 0; vo

  • Unity中3DText显示模糊不清的解决方案

    在Unity中,当我们想要给3D物体一个文字说明时,使用Canvas下的Text虽然也能通过缩放实现,但是实现起来比较麻烦,改动的多,大小和位置也不容易控制. 此时就需要用到我们的3DText了,对于初次使用这个组件的"攻城狮"来说,会发现在Game场景中很模糊 具体修改操作如下: 此时,只需要选中当前3DText的物体,修改TextMesh组件下的Character Size和Font Size两个属性值.例如: 在这里,Character Size值越小,同时Font Size越大

  • IDEA中Services栏不显示的解决方案小结

    正常编译完一个SpringBoot或者SringCloud项目之后,Services都会显示出你有哪些服务,假如你本地启动一个SpringCloud项目,启动有顺序要求的时候,但是又不知道自己启动好了没,没有Services栏可以清晰的显示各个微服务的运行情况. 如果没有Services栏,请看下面的解决方案 在项目的工作空间下/.idea/workspace.xml文件中搜索 "RunDashBoard"    如果没有找到的关键字就加入以下内容 二选一即可,本人采用的是第一种 第一

  • Bootstrap3 多个模态对话框无法显示的解决方案

    今天帮同事调了一个代码,他们的项目最近在用Bootstrap做开发,突然间,他遇到了一个奇怪的问题,如果一个页面中,有多个Modal对话框的话,排列在第一个的对话框,能够正确显示,第二个,只能导致页面出现MASK层,却不能显示Dialog. 如果调整顺序,仍然是第一个能显示,第二个只有页面变暗.效果如下: 第一个,正常弹出的Dialog 第二个无法弹出,只是页面变暗的dialog 而两个dialog的代码是完全一致的,具体的代码如下: <div class="modal fade"

  • Android中WebView常见问题及解决方案汇总

    Android WebView常见问题解决方案汇总: 就目前而言,如何应对版本的频繁更新呢,又如何灵活多变地展示我们的界面呢,这又涉及到了web app与native app之间孰优孰劣的争论. 于是乎,一种混合型的app诞生了,灵活多变的部分,如淘宝商城首页的活动页面,一集凡客诚品中我们都可以见到web页面与native页面的混合,既利用了web app的灵活易更新,也借助了native app本身的效率. 当然,就会用到webview这样的一个控件,这里,我把自己使用过程中遇到的一些问题整理

  • 详解Python Matplot中文显示完美解决方案

    原因与现象 Matplot是一个功能强大的Python图表绘制库,很遗憾目前版本自带的字体库中并不支持中文字体.所以如果在绘制内容中需要显示中文,那么就会显示为方格字符. 解决办法 有一个较为完美的解决方案,通过扫描Matplot自带字体库以及系统字体库,寻找能够支持的中文字体,如果能够找到的话,就设置第一个为Matplot的字体熟悉. import matplotlib.pyplot as plt from matplotlib.font_manager import FontManager

  • 解决Spyder中图片显示太小的问题

    最近在做机器学习的作业,需要画决策树.在Spyder中把代码跑了一遍,发现决策树出现在了Spyder的console中,而且图片很小,那些字体都叠在一起.网上搜了一圈好像也没找到解决方案. 但不要紧啊,Anaconda中不是还有Ipython和Jupyter Notebook吗.这两个都可以弹出窗口显示图片.cd到相应路径,在这两个中跑一下之前保存过的python代码就可以了. run XXX.py 以上这篇解决Spyder中图片显示太小的问题就是小编分享给大家的全部内容了,希望能给大家一个参考

  • matplotlib 生成的图像中无法显示中文字符的解决方法

    前几天使用matplotlib 绘图的时候发现无法使用中文字符,所以找了个笔记,顺便分享给大家 开发环境 windows 8.1 64bit python 3.6.0 matplotlib 3.2.1 问题背景 使用 matplotlib 绘制函数图像的时候,发现设置图像名称或图例需要汉字显示的时候只能得到空格 生成图像中的中文错误效果 原因分析 python中的matplotlib仅支持Unicode编码,默认是不显示中文的. 解决方案 解决方案1 python文件中添上一段语句 plt.rc

  • 在Unity中使用全局变量的操作

    创建一个脚本,输入下面的代码.脚本不需要添加到任何物体上,globle变量可以跨场景全局调用. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Globle { public static int globle= 1; } 和以前的许多语言不同,C#没有全局变量或全局函数.C#的所有字段和方法都在类的上下文中. 在C#中,与全局字段或函数等价的是静态字段或方法.

  • 解决在Unity中使用FairyGUI遇到的坑

    首先!首先!首先! 首先,我们由于历史问题,项目用的UI编辑器不是大众使用的GUI或者NGUI, 而是使用不知道算不算小众的FairyGUI,这个UI系统使用挺方便的,也提供了很多UI编码的案例,至少从直接使用来说方便了不少. 但是!但是!但是! 可能用到这个UI编辑器的不是那么多,项目上遇到的问题在网上百度出来的结果很少,基本自己断点查找bug. 最后!最后!最后! 我这个从没写过几次技术博客的人,要写这篇技术贴的原因是:昨晚加班到四五点钟查找BUG回到屋里,发现由于没有关好自己卧室的门,室友

  • 在Java中避免NullPointerException的解决方案

    我object != null要避免很多NullPointerException. 有什么替代方法: if (someobject != null) { someobject.doCalc(); } 解决方案: 在我看来,这似乎是一个相当普遍的问题,初级和中级开发人员往往会在某个时候遇到这些问题:他们要么不知道,要么不信任他们所参与的合同,并且防御性地检查了null.另外,在编写自己的代码时,他们倾向于依靠返回空值来表示某些内容,因此要求调用者检查空值. 换句话说,在两种情况下会出现空检查: 如

随机推荐