總的筆記:https://www.cnblogs.com/guobaoxu/p/12055930.html
目錄
工具:
Unity版本:2018.4.5f1
Bitmap Font Generator:簡稱BMFont,就是常用的那個做位圖字體的工具,地址:http://www.angelcode.com/products/bmfont/
AssetStudio:地址:https://www.perfare.net/tag/assetstudio
UABE:地址:https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor
一、Demo
BMFont主要是NGUI在用,所以先做一個簡單的Demo,用UGUI在屏幕上寫一行字,采用黑體做成的BMFont,先用BMFont軟件做,再導入Unity,Demo效果如下。目標是給他換成別的字體。
二、分析思路
BMFont由兩部分組成,一張圖+一個文本(fnt后綴名),但是在導入Unity的時候,NGUI插件還加了一個Prefab和一個Material,不管怎么樣,先用AssetStudio來預覽,首先圖是找到了,這個肯定是要改的,也比較簡單,然后是找到了一個MonoBehavior,參數預覽如下:
顯然BMFont的文本被改寫成了這個MonoBehavior,那么替換就很簡單了,再做一個含有新字體的APK,先用UABE導出需要替換的這兩個部分,再導回去就結束了
三、替換
和TTF不同,BMFont一般不會包含很多字符,所以用UABE來DUMP文本的話並不會很大。首先是這MonoBehavior的替換,分別Dump出新舊字體的參數文本,把新字體里面的指針都改成和舊字體一樣,如下圖紅圈覆蓋部分,然后把新字體的參數導入給舊字體。
圖片替換就比較簡單了,直接找到圖片對應的Texture2D,右側Plugins-Edit-Load新圖,即可。
最后保存重新打包APK就完成了,最終效果如下
四、總結
完整操作:
① 用新字體做一個簡易Demo
② 用新字體的MonoBehavior和圖片分別替換
③ 實際上在MonoBehavior里面有一個指針指向了Material,如果替換之后效果不理想,可以把他也替換了,和替換MonoBehavior的時候相似,內部的指針必須保持
五、補充
在實際應用中,我曾經遇到了文本和圖片還保留着的情況,測試過,沒有了MonoBehavior要替換,取而代之的是TextAsset和Texture2D要換,這兩個UABE都有插件,替換起來很方便。而且只需要用BMFont做出新字體就可以了,不需要用Unity。