【Unity3D游戏开发】NGUI制作字体的三种方法 (二一)

2024-03-24 19:32

本文主要是介绍【Unity3D游戏开发】NGUI制作字体的三种方法 (二一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NGUI制作字体的三种方法

主要参考两篇博文:

 (1)、NGUI制作字体的三种方法

 (2)、使用位图字体工具BMFont从图片生成自定义字体

1.BMFont下载地址

http://www.angelcode.com/products/bmfont/

2.BMFont使用方法

http://momowing.diandian.com/post/2013-01-24/40046239211

首先打开Font Settings,选择要制作的字体。可以从Font列表中选择一种字体,也可以通过Add font files导入一个ttf字体文件。

Charset字体编码默认为Unicode,当然也可以选择其它的。

点击OK,字体设置成功。

 

然后打开Export Settings,进行导出设置

Width和Height的值,尽量选小,只要能够容纳我们需要用到的所有字就可以了,选大了浪费。

Bit depth,32位比8位更清晰,不过负担更大。

Font descriptor选择Text

Texture选择png

选择OK,完成导出设置。

 

接下来我们就可以选择我们所要制作的字,一个一个去找太麻烦了,我们可以先新建一个txt文件,在其中输入我们要制作的字,然后Select chars from file就可以直接选中所有要用到的字了。

注意

1.在导入前要先clear all chars in font。

2.由于txt文件的编码方式不是在上面设置的unicode,所以我们要对这个txt文件另存为unicode方式,并覆盖。否则,在导入时会提示charcters from the file are not available in the font

 

最后Save bitmap font as就可以导出一个png和一个fnt,将fnt改为txt格式。这就是我们在ngui中制作bitmap字体所用到的两个文件了。

3.新版NGUI提供的三种创建字体方式

(1)使用BMFont制作的png文件和txt文件制作bitmap字体。分别将两个文件拖入texture和font Data里面。 缺陷:局限于个别字。不能随意改变。还要用外部工具BMfont来创建字体集。

(2)动态字体,需要先导入一个ttf字体文件。C/windows/fonts下面就有很多。也可以从网上下载一些独特的字体。

导入后,拖入Source中,选择size等就可以创建一个字体。

也可以另外手动创建http://momowing.diandian.com/post/2013-05-07/40051478498

注意看下面的提示:要使用动态字体,不必创建UIFont,只需要在UIlabel中选择Unity,再将ttf文件拖入font中即可。

缺点:动态字体不能作为一个atlas的一部分,所以使用动态字体必然要增加至少一个draw call。而且ttf文件一般较大,会大大地增加包大小

 

(3)可以使用ttf字体文件来创建一个bitmap字体。
与第二种方法类似,区别只是这种方法创建的字体不需要使用BMFont来创建,直接在Unity内部就可以创建,只要我们导入了相应的ttf文件。
而且与第二种方法相同的是,打包时只会包含一个png,一个prefab,一个material,而不会把ttf包含进去。

本篇讲解如何利用美工提供的字符图形来生成自定义字体。

美术提供的字体经常是下面这样的:

或者这样的:

这时候我们就要借助BMFont了,首先针对真彩色的图形,我们要做一些设定,点击"Options"->“Export options”:

 

在弹出的窗口中,注意红框中“位深”,设为32:

然后,点击"Edit"->"(Un)Select all chars",取消选择所有字符。因为我们将在后边导入需要的字符。

OK,现在点击"Edit"->"Open Image Manager":

弹出图片管理窗体,如下:

那个"Image"是菜单,可以点击。选择"Image"->"Import image...":

弹出如下窗体:

点击"Browse"按钮,在弹出的“打开”窗口中选择一个字符图片,比如"0":

然后在ID后的文本框中输入字符"0"的Ascii值:48,点击"OK"。

这时返回主窗体,你会看到字符表中"0"右下角有一个小亮点标记,说明该字符的图形为自定义图片。如下图:

按上述方法,依次加入其它字符的图片,完成后如下:

OK,下面准备导出。导出前我们可以先点击"Options"->"Visualize"预览一下:

最后得到如下文件:

将生成的这两个文件,拖入上面提到的NGUI制作方法(一),的两个框框内,点击create,即可生成需要的UIFont的Prefab。

原文链接:http://www.cnblogs.com/slysky/p/4602995.html

这篇关于【Unity3D游戏开发】NGUI制作字体的三种方法 (二一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/842563

相关文章

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Spring Security方法级安全控制@PreAuthorize注解的灵活运用小结

《SpringSecurity方法级安全控制@PreAuthorize注解的灵活运用小结》本文将带着大家讲解@PreAuthorize注解的核心原理、SpEL表达式机制,并通过的示例代码演示如... 目录1. 前言2. @PreAuthorize 注解简介3. @PreAuthorize 核心原理解析拦截与