Unity自定义字体 包括中文

项目中需要用到很多的美术字,在网上查了可以用BmFont制作,但是要把图片单独切割出来 还要一个一个导入 设置id 大小等等 真的是炒鸡繁琐 后来别人分享了另一个插件 外国大佬制作的,很牛逼 也挺好用 ,链接 但是还是逃脱不了要一个一个字敲 还是觉得很麻烦呢 。所以我制作了一个工具

效果图

    

1.原理

    unity其实一直就有一个custom font功能,网上也能找到很多博客.

然后我们只要设置相关信息

有多少个文字,就设置相应size大小

Index:就是字符十进制索引

UV:文字在图片中的UV信息

Vert:垂直大小取决于字符的像素大小,例如 您的字符均为128x128,在Vert Width和Height中分别输入128和–128将得到适当比例的字母。 垂直Y必须为负。

Advance:从此字符的原点到下一个字符的原点的所需水平距离,差不多也就是宽了

主要 就是每个字的Index

具体可以看看unity的官方文档和另一个文章

https://docs.unity3d.com/Manual/class-Font.html

http://www.manew.com/thread-110484-1-1.html

例如我们在制作数字(0-9)字体的时候就需要 一张数字图片,然后设置Character Rects,文档中说的很清楚,Index就是指的当前字的 ASCII码的索引(十进制),例如0=48 1=49…..

如果我们想设置更多的文字,也是可以的,因为Unity支持Unicode,但是我们需要一些步骤,将文字->16进制->十进制

这里有个在线的转换工具:http://www.ab126.com/goju/1711.html

关于编码可以查看这篇文章:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

代码

string content = "你好";
    for (int i = 0; i < content.Length; i++)
    {
        var bytes = Encoding.Unicode.GetBytes(content[i].ToString());
        var stringBuilder = new StringBuilder();
        for (var j = 0; j < bytes.Length; j += 2)
        {
            //x2是十六进制 两位如果没有用 0补充
            stringBuilder.AppendFormat("{0:x2}{1:x2}", bytes[j + 1], bytes[j]);
        }
        Debug.Log(stringBuilder.ToString());
        //你->4f60
        //好->597d
        int index = Convert.ToInt32(stringBuilder.ToString(), 16);
        Debug.Log(index);
        //你->20320
        //好->22909
    }

或者

 string str = "你好";
        for (int i = 0; i < str.Length; i++)
        {
            Debug.Log(System.Convert.ToInt32(str[i]));
            //log: 20320
            //log: 22909
        }

 

然后我们把字体的”你”的Index设置成20320即可.

2.需要准备些什么

  1. 要一个text文本确保是utf-8格式,里面文字内容
  2. 要一个艺术字图片,图片大小随便定义,但是要规整的图片 而且自己要知道每个图片字的长宽
  3. 图片的话尽量要规整哦

3.如何使用

  1.  

    

    最后点击生成就行了 在包中我做了两个示例(图片不好看轻喷 )

  4.注意

  1. 文本和图片字顺序要一一对应
  2. 有个很致命的问题 我当时开发的使用的是5.6.2是没有啥问题 但是低于5.6.2会发生字体生成的字体 不会显示 这个时候只要复制(Ctrl+D)一份生成的字体就可以了,这个估计是官方bug

 

还有什么问题直接github上面提问

附上地址:https://github.com/ZeroUltra/Custom-Font

    

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值