You are on page 1of 9

2018/10/13 以BMfont打包美術字型的方式

以BMfont打包美術字型的方式

4 月 29, 2014

遊戲製作中經常需要使用不同的字型,受限於動態字型能選擇的種類並不多,要增加就需要打包新的字集

進引擎,但整個字集動輒數MB,匯入引擎又增加整體的下載容量大小,並不是個很經濟的方式。

先前在工作上遇到這個問題,經由和程式討論得到「可以利用工具將字集中的個別文字拆出,並拼成一張

字型貼圖」的作法,所以記錄一下。由於一個字集包含許多符號及冷僻字,其實只要挑出所需的文字就可

以,不需將一整個字集匯入,徒增專案容量大小。

字集打包工具BMFont
BMFont(Bitmap font generator)是一套可以將字型集拆開,並選擇個別文字輸出整合成一張貼圖的工

具,這麼作可以方便程式調用文字而不需要包入整個字集,輸出的文字也能夠是美術套用過效果的圖型

字,讓字型更美觀。

首先開啟BMFont,左側是預設讀取的字型(理論上應該是因為名稱而排名前列的Arial),右側是這個字集

中的不同分項,內含各種不同文字或符號。點選灰色區塊會發現文字反白表示被選取,待會輸出的時候就

會包含選取的文字。

接著開啟Options→Font settings,在Font的位置設定字集(也可以用Add font file由外部讀入)。

http://aetious.blogspot.com/2014/04/uibmfont.html 1/9
2018/10/13 以BMfont打包美術字型的方式

http://aetious.blogspot.com/2014/04/uibmfont.html 2/9
2018/10/13 以BMfont打包美術字型的方式

當然,挑選的文字一定是遊戲中會使用到的,所以這部份也算在前置工作中。確認後回到主畫面就可以發

現灰色區塊的欄位已經顯示成所挑選的字體,所以接下來就是將所需的字體挑出並輸出成貼圖。

但問題是文字總量不論有無挑選過,一定都有不少數量,同時也不確定想要的文字是在哪一個分項中,一
個個找實在很費時。BMFont提供從文字檔或圖檔擷取文字的方式,節省不少時間。

轉碼及簡便的文字挑選功能
使用這個功能需要先將文字打在一般的記事本上,並存成txt檔再轉給BMFont。

而BMFont本身使用的是UTF-8固定編碼,所以準備的文檔也需要遵守這個規定。首先將所需的文字輸入在
NotePad++上,由於有編碼問題,用一般windows內建的記事本還需要轉碼,會很麻煩。

http://aetious.blogspot.com/2014/04/uibmfont.html 3/9
2018/10/13 以BMfont打包美術字型的方式

確認編碼無誤後輸出.txt檔,並開啟BMFont→Edit→Select chars from file,讀入剛才輸出的文字檔。

順利的話BMFont會告知讀入的字數,同時也會直接選取該文字。在右側的分項選取格中有標示出綠色線段

http://aetious.blogspot.com/2014/04/uibmfont.html 4/9
2018/10/13 以BMfont打包美術字型的方式

的,就表示該項中有文字被選取,可以確認一下有沒有選到所需的文字。

http://aetious.blogspot.com/2014/04/uibmfont.html 5/9
2018/10/13 以BMfont打包美術字型的方式

輸出貼圖
確認無誤後即可輸出貼圖,選擇Options→Export options,在Texture中輸入想要的貼圖大小,這裡要注意
的是不要超過4096*4096,因為待會在Unity中設定Atlas的時候會限制在這個大小之下。

不過如果要輸出到這麼大的話,其實匯入字集可能還比較省事,所以還是視情況略微調整比較好。

另外在Bit depth中可以設定8或32位元格式,如果要輸出帶有Alpha的貼圖就得選32,並在下方的Presets
選擇。也不要忘了依最後所需的圖片格式,在File format中設定好Texure格式(這邊選的是PNG)。

http://aetious.blogspot.com/2014/04/uibmfont.html 6/9
2018/10/13 以BMfont打包美術字型的方式

輸出後會得到兩個檔案,一個是位置的記錄檔,一個則是貼圖本身。

接著將這兩個檔案丟入Unity Asset中並分類放好,開啟NGUI→Font Maker製作Atlas。Type使用預設的

http://aetious.blogspot.com/2014/04/uibmfont.html 7/9
2018/10/13 以BMfont打包美術字型的方式

Bitmap即可,並設定Font Data為剛才輸出的字型位置檔案,然後附上貼圖以輸出Atlas。

完成Altas後會跟著在Asset中產生對應的Prefab和Material,這兩個都由系統作了預設命名,可以再依歸檔
需求調整。

接著在畫面中新增Lable並輸入對應的中文,就可以看到成果。

http://aetious.blogspot.com/2014/04/uibmfont.html 8/9
2018/10/13 以BMfont打包美術字型的方式

BMFont還有其它比較細節的選項我沒用過,其實相關的教學在Google上還不少,也有很多寫的更簡潔單
純的文章,會再寫一遍純粹是想留個記憶,免得未來不久跟著忘個一乾二淨。

延伸閱讀
Unity3D学习网: Unity教程之-UGUI美术字体的制作与使用
HappyCoding:] ChildhoodAndy :详解利用ShoeBox制作位图字体

http://aetious.blogspot.com/2014/04/uibmfont.html 9/9

You might also like