《Unity 3D NGUI 实战教程》一2.4 制作第一个UI字体

简介:

本节书摘来异步社区《Unity 3D NGUI 实战教程》一书中的第2章,第2.4节,作者: 高雪峰 责编: 张涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.4 制作第一个UI字体

Unity 3D NGUI 实战教程

2.4.1 为什么要制作UI字体

在游戏的项目开发中,字体是经常会用到的东西,因为游戏中不论是聊天、公告、提示语还是界面显示,都会涉及用程序来写字。一般来说,会有系统默认字体供我们使用,但是出于以下两个原因我们经常会需要制作独特的字体。

系统字体的风格和美观程度等无法满足我们的需求。
一般来说,系统字体都比较死板、生硬,风格单一,经常无法满足项目需求。例如,我们希望游戏中所有文字都使用楷书来突出中国风,那么则需要我们自己植入楷书字体。再例如,我们需要在某些地方显示一些造型独特的字体,更需要制作我们自己独特的字体文件才能满足这种需求。

应对系统字体丢失的情况。
某些玩家(特别是安卓玩家)如果经常从网上下载一些个性化的字体管理软件,会很容易导致系统字体丢失,这种情况一旦发生,会导致游戏内所有的文字都不能正常显示。为了以防万一,我们需要植入一套自己的字体在游戏资源包内部。

2.4.2 静态字体和动态字体

我们在2.2节中已经介绍了什么是静态字体和什么是动态字体,这里我们来了解一下什么情况下需要静态字体,什么情况下需要动态字体。

当有大面积的字体需求,并且需要的文字几乎涵盖大部分汉字时,我们就需要制作动态字体。与其说是制作动态字体,不如说是植入动态字体,因为在新版的NGUI中,制作动态字体只需要导入一个TTF格式的字体文件即可。

当在某些地方有特殊字体的需求,并且这种字体显示的文字有限时,例如受到伤害时,角色头顶需要飘出一个有艺术效果的数字来表示伤害量,这种字体效果只会显示0~9共10个数字而已,其他地方都用不到这种字体,那么这个时候我们就可以为它制作一个静态字体。

具体来说,静态字体和动态字体有以下实质区别。

静态字体中,如果需要用到的文字不多,打成图集后资源量往往比动态字体小,一个动态字体的TTF格式文件一般为3~6MB。
静态字体可以通过提供一张自定义的含有所需文字的图片和一个配置文件(记录图片哪一块是哪个字的文件)来完成。动态字体只能通过导入整个TTF格式的字体文件完成。
静态字体中的字一般非常有限,只有极少数的字(否则图片资源会非常大),所以应用范围非常小,几乎很少用到静态字体。而动态字体几乎包含所有的文字,被广泛运用。

2.4.3 制作静态字体介绍

静态字体曾经风靡一时,原因是那时候NGUI旧版本对动态字体支持不是很好,所以很多时候得依赖静态字体。目前NGUI对动态字体支持很好,所以静态字体的应用就变得很少,只有在特殊情况下才使用。

要制作静态字体,需要将字筛选出来打成一个图集,并生成一份记录其中哪一块是哪个字的配置文件,这时可以借助一个名为BMFont的软件将其制作出来。制作出这两份文件之后,导入到Unity里。

在Unity界面中,在Project窗口内单击鼠标右键,选择NGUI菜单,选择Open BipMap Font Maker,打开流程和打开Atlas Maker极其相似。Mac电脑可以通过Unity顶部菜单栏中的NGUI菜单打开。

然后会弹出如图2.24所示的界面,在Type中选择Imported Bitmap,然后在Font Data中选择我们之前制作出的那个记录文字位置信息的配置文件(最好是TXT格式),在Texture中选择我们之前制作出的那个文字图集,然后单击主按钮Create the Font,即可创建出一个静态字体,创建出来的字体文件和制作图集得到的文件类似。制作好后,以后我们需要用字体的时候,选择这个字体的预设即可。

注意,制作完成后不要删除导入的那张文字图集和文字位置的配置文件的源文件,如果删除将会导致字体读不出文字。


24

2.4.4 制作动态字体介绍

在新版本的NGUI中(比如,3.6以后),制作动态字体非常简单,只需要从网上下载一个TTF格式的字体文件即可。然后将这个字体文件导入Unity中就算完成了,以后需要用字体的时候,就能直接调用这个字体。

注意,字体文件要选择简体中文的,TTF文件大小一般为3~6MB,如果远远超出了这个数,一般来说很有可能是字体中包含了很多种语言。

相关文章
|
8天前
|
图形学 开发者
Unity Text字体颜色渐变
此代码实现文本颜色的垂直渐变效果。通过定义起始和结束颜色,获取像素位置信息(UV坐标),根据渐变方向计算颜色插值,并应用到每个像素上。具体步骤包括:1) 定义颜色范围;2) 获取UV坐标;3) 计算线性插值;4) 应用颜色。脚本挂载在Text组件上,可调节顶部和底部颜色实现渐变效果。
|
23天前
|
人工智能 自然语言处理 API
用自然语言控制电脑,字节跳动开源 UI-TARS 的桌面版应用!内附详细的安装和配置教程
UI-TARS Desktop 是一款基于视觉语言模型的 GUI 代理应用,支持通过自然语言控制电脑操作,提供跨平台支持、实时反馈和精准的鼠标键盘控制。
483 17
用自然语言控制电脑,字节跳动开源 UI-TARS 的桌面版应用!内附详细的安装和配置教程
|
8天前
|
图形学
Unity 获取鼠标位置下的UGUI或3D物体
本文总结了两种检测方法,分别用于UGUI和3D物体的检测。第一种方法`GetOverUIobj`专门用于检测鼠标悬停的UGUI元素,通过`GraphicRaycaster`实现。第二种方法`GetOverWordGameObject`则同时适用于UI和3D物体检测,利用`PhysicsRaycaster`进行射线检测。两者均返回悬停对象或null。
|
8天前
|
图形学
unity判断鼠标在不在UI上
在 Unity 中,判断鼠标是否在 UI 上主要依赖事件系统和射线检测机制。Unity 的事件系统负责处理输入事件,GraphicRaycaster 组件用于检测射线与 UI 元素的相交情况。通过 `EventSystem.current.IsPointerOverGameObject()` 方法可轻松判断鼠标是否在 UI 上。对于移动端,使用 `EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId)` 来判断触摸是否在 UI 上。代码实现简单且高效。
|
8天前
|
前端开发 图形学
unity UGUI跟随3D物体的坐标转换
在 Unity 中实现 UGUI 元素跟随 3D 物体,关键是将 3D 物体的世界坐标转换为屏幕或画布坐标。通过 Camera.WorldToScreenPoint 方法,可将 3D 物体位置映射到屏幕上,再更新 UGUI 元素的位置。代码示例展示了如何使用该方法,使 UGUI 图像跟随 3D 模型,并提供文字显示、图像和线条的显示/隐藏功能。
|
2月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
1313 1
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
2月前
|
前端开发 数据安全/隐私保护
全新紫色新UI数码盲盒系统源码/全开源无加密/附教程
全新紫色新UI数码盲盒系统源码/全开源无加密/附教程 前端uniapp+H5 后端FastAdmin框架 可打包成APP多端运行 亲测可用
89 13
|
4月前
|
消息中间件 存储 JSON
rabbitmq基础教程(ui,java,springamqp)
本文提供了RabbitMQ的基础教程,包括如何使用UI创建队列和交换机、Java代码操作RabbitMQ、Spring AMQP进行消息发送和接收,以及如何使用不同的交换机类型(fanout、direct、topic)进行消息路由。
53 0
rabbitmq基础教程(ui,java,springamqp)
|
6月前
|
编解码 前端开发 vr&ar
从零开始的PICO教程(4)--- UI界面绘制与响应事件
这篇文章是PICO开发系列教程的第四部分,主要介绍了如何在PICO 4 VR环境中创建UI界面,包括Canvas和Panel的配置、UI元素的绘制、以及Button和Slider的事件响应绑定,并通过示例展示了数字增减和滑块功能的具体实现。
从零开始的PICO教程(4)--- UI界面绘制与响应事件
|
5月前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
300 3

热门文章

最新文章