Skip to content

ZeroUltra/Custom-Font

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CustomFont

Unity 自定义艺术字 CustomFont

原理

unity其实一直就有一个custom font功能,网上也能找到很多博客. 官方链接Unity - Manual: Font assets

img

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

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

  • Index: ascii索引,也就是字符十进制索引

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

  • Vert:垂直大小取决于字符的像素大小,例如 您的字符均为128x128,在Vert Width和Height中分别输入128和–128将得到适当比例的字母。 垂直Y必须为负。(从图片的左上角开始读取)

  • Advance:将从此字符的原点到下一个字符的原点的所需水平距离(以像素为单位)。在计算实际距离时,它乘以 Tracking 。(可以理解为每个字的间距,如果字符宽高都是50,Advance也是50,那么间距就是0)

img

主要 就是每个字的Index

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

Unity - Manual: Font assets

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

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

关于编码可以查看这篇文章:字符编码笔记:ASCII,Unicode 和 UTF-8 - 阮一峰的网络日志

代码

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即可.

需要准备些什么

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

使用说明

简单说明:

相关链接:Unity自定义字体

About

Unity 自定义艺术字 CustomFont

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages