关于unity中字体的一些思考

unity中的字体主要分为两大类:动态字体和静态字体。关于这两方面,下面是我个人一些简单思考:

一、静态字体

主要是用来做一些表现,即通常所说的美术字。项目中用的比较多的,应该是美术数字,即0-9。

对于UI很可能会将美术数字单独制作成一张图集,里面最多再包含一些特殊的符号,比如“,”、“:”等。

对于战斗场景,特别是像MMO或者RPG,战斗过程人物冒血、战力变化等,也许不仅仅是需要数字,还可能用到特殊的美术文字。在同屏人数较多的情况下,如果美术文字与美术数字分别单独占用一个图集将会造成大量的drawcall,这个时候如果将美术文字与美术数字制作到同一张图集中,将会极大减少不必要的drawcall。

二、动态字体

对于项目开发,动态字体带来的最大影响应该是对包体大小的影响,主要是因为动态字体中包含了大量的冗余字符。

比如:我想开发一款中文游戏,但是动态字库中包含了大量的韩文、日文等其他语言的字符,这个时候,如果将动态字库中不需要的语言字符剥离,将会大大减小包体的大小。另外,中文中有很多生僻字,很大程度上项目中也不会用到,也可将其剥离出去。具体的剥离方法,网上有很多现成的工具与方式,比如:http://gulu-dev.com/post/2017/2017-09-15-font-pruner-intro/contenthttps://blog.uwa4d.com/archives/Sparkle_Font.html

原文地址:https://www.cnblogs.com/luguoshuai/p/11306174.html

时间: 2024-10-03 15:48:32

关于unity中字体的一些思考的相关文章

在Unity中使用Direct2D

在Unity中可能需要在纹理上面绘制文字.图像等.比如游戏中的显示器,手机等等等等等.太多了. Unity的Textute2D类提供了设置像素的操作,但是这效率实在不敢恭维. 汉字数量巨大,全部贴在一张图上既耗空间,不方便改变字体样式. 使用FreeType2等CPU计算的文字库一帧又画不了多少,毕竟还要提交到显存 于是瞄准了Direct2D,当初学习这图像接口时就被微软说的"能与Direct3D进行完美交互"所吸引. 好在Unity支持DX11了,我们能够在Unity上面使用Dire

Libgdx中TextButton的一些思考

因为有要实现以下TextButton的这个需求.然后就去看了一下Libgdx中文档.游戏中的按钮,很多人都比较习惯使用换图片的方式来实现.很少有人会直接使用libgdx中的TextButton,如果实在不行也是自己去写一个TextButton的类. 抱着"它真的有那么渣的态度吗",我去看了一下libgdx自带的TextButton.以下是我的思考的轨迹.整理如下: 在现在,libgdx的资料那么少,有的那些资料也是比较基础的.抱着"看别人的,还不如自己去官方文档."

NGUI在Unity中因更改窗口区域而出现Bug的处理

最近,在Unity5.0.1中遇到了NGUI中的一些BUG问题,比如,你用NGUI开发进行拖拽Sprite 的功能,或者在一些Lable上使用了dynamic font, 然后把它编译成可在PC上运行的exe可执行 文件 (记得 Player Settings的Resolution中勾上Resizealbe Window),  当它运行时,这时你就 会发现问题来了,比如打开时是720*480大小的窗口区域,然后你通过拖拽窗口边界,或者直接 进行窗口最大化放大,这时你会发现UI Root中的Spr

unity中计算ugui中Text控件的所需长度

背景是这样的,我在unity中需要在我按下某个按键的时候,然后显示出被射线碰撞到的物体的信息.物体的信息之前已经整理好成txt文本了.读取一下就可以了.那么这时候就有一个问题,因为每个物体的介绍信息不是一样的长度,那么如果当text控件里面文字的长度超过显示的长度时,超过部分就不再显示.那么这该怎么办. 我是通过去便利txt文本中的所有文字和符号,然后将所有换行符也就是/n的个数记录下来,然后计算一下对应字体大小一行有几个字,比如我的是18号字体,那么一行可以写30个字,然后计算一下txt文本中

关于Unity中Camera的Aspect

一直以来对Camera的Aspect和Game窗口的Aspect都是一知半解,某天从一本书中看到了对Camera的API讲解,但是总觉得对Aspect讲解的有问题.于是就认真的思考起了这个问题,还发现设置完Cmera.aspect之后,Scene窗口的视椎体竟然不同步, 也不知其原因.苦恼了很久.经过一番研究并与同事讨论有所收获,便写下此文.一方面为了强化自己的理解,一方面也为了分享给更多人. 言归正传,大家都知道我们在场景中放置的物体最终渲染到屏幕上都是离不开我们的摄像机.对于透视摄像机(Pe

在Unity中使用事件/委托机制(event/delegate)进行GameObject之

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 一对多的观察者模式机制有什么缺点? 如果你对如何在Unity中使用事件/委托机制还不太了解,建议您查看我的前一篇文章:[Unity3D技巧]在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 在前一篇博客里面,我们写到

unity中三种调用其他脚本函数的方法

第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名().很不实用-- 第二种,GameObject.Find("脚本所在物体名").SendMessage("函数名");  此种方法可以调用public和private类型函数 第三种,GameObject.Find("脚本所在物体名").GetComponent<脚本名>().函数名();此种方法只可以调用public类型函数 unity中三种调用其他脚本函数的

关于Unity中的NGUI和UGUI

用Unity开发2D游戏,有三套关系 1.GUI:Unity本身的对象 2.NGUI:以前在Unity中广泛来做2D的,是第三方的包,需要安装 3.UGUI:Unity5.X后,Unity找到NGUI的作者,开发了UGUI,变成内置于Unity中的包,官方主推 所有的元素都在Unity的UI工具栏 3D做2D游戏的方法: 1: 使用正交摄像机;2: 使用透视摄像机,将2D元素移动到合适的距离. 例如设计分辨率为 960x640, 得到在3D世界里面一个图片的大小w*h米,将这个图片移动到一定的距

Unity中使用协程进行服务端数据验证手段

近期在做项目中的个人中心的一些事情,用户头像上传,下载,本地缓存,二级缓存,压缩,这些都要做,麻雀虽小五脏俱全啊,也是写的浑浑噩噩的, 当我们在上传用户头像的时候,向服务端发送上传头像请求之前,一般都会做一次验证,向服务端获取token验证信息,来确保非法上传,如果不做这个那么会有非法用户上传非法图像,使你的服务器 带来未知的灾难. 而验证的逻辑很好写,并没有什么难度,比如: Server.SendMessage("获取token"); Client.Receive(string to