如何精簡Unity中使用的字型檔案

2021-09-21 23:57:51 字數 1364 閱讀 4169

◆◆

問題描述

我們《極無雙》專案中使用了兩套字型檔。黑體字體來顯示大部分既定文字、玩家暱稱、對話等。隸書字型來特殊顯示一些標題、武將姓名、稱號、重要對話等需要著重美化顯示的文字。

開始優化前,我們習慣性地在uwa平台上(www.uwa4d.com)提測了一下,在得到的報告中檢視:記憶體管理》 具體資源資訊 >> 字型資源 這一頁。如下圖所示,那時候從記憶體曲線圖上看到字型資源占用記憶體高達12mb。

在此先讚一下uwa測評報告,其在定位問題資源時真是高效。報告很明確地指向了兩個可以優化的方向:1)記憶體占用;2)數量峰值。對於數量峰值為2表示每個字型各自有乙份冗餘資源。

究其原因如下:

1)遊戲早期登陸階段的場景,以及裡面用到的貼圖、字型等資源往往是不能用assetbundle進行載入的。而這些貼圖和字型等資源如果又在assetbundle裡面有依賴,就會在專案中存在相同的兩份;

2)記憶體占用很好理解,基本上字型檔的磁碟容量等同於記憶體占用。

◆◆

優化方案

1. 字型檔裁切

既然我們接下來要做字型精簡的工作,那麼針對登陸階段/遊戲階段的不同應用場景,可以設計不同的裁切字型檔。最終我們的設計如下圖所示:

2. 實際操作

裁切字型的工具很多,我們選用的工具是fontsubsetgui,簡單夠用。大家只要準備好乙個包含你需要字元的txt檔案和ttf原檔案。執行fontsubsetgui,選好ttf檔案和txt檔案的路徑,【proceed】生成新ttf檔案。

效果 & 小結

精簡之後在uwa上覆測,最終字型占用記憶體從12mb降低到4.9mb,效果拔群。

通過上述的優化操作,筆者得出結論如下:

針對不同字型的應用場景,設計有效精簡的裁切字型檔。

需要注意同乙個字型資源在assetbundle內外可能都會有依賴,如果依賴不能避免,那麼就要各自設計裁切字型檔。

如何精簡Unity中使用的字型檔案

在遊戲開發過程中,為了ui介面美觀和顯示效果一致性的考慮,大部分遊戲都會使用動態字型來表現文字。尤其在這個看臉的時代,一種字型已經無法滿足ui同學對美觀的需求,因此我們常常發現若干個小則兩三兆,大則十幾兆的字型檔案,這些檔案既佔包體又佔記憶體。因此,對字型的合理使用和優化已經成為專案中後期優化必不可...

unity字型檔精簡

有2種辦法,具體看情況使用 1.unity自帶功能 選擇放入的字型,修改character項為 custom set 接著出現custom chars中輸入你想使用的字串,字元重複無所謂,因為最終會自動過濾掉重複字元.如輸入 你好世界 那麼整個字型最終只包含 你好世界 這四個字的 字元貼圖,也就是你...

Unity中使用LookAt的坑

當實現乙個物體朝向乙個點時,通常使用transform.lookat。對於3d物體沒有問題,但是對於2d物體,會出現奇怪的效果,這樣因為api的原理,它的官方解釋是這樣的 旋 身,使得當前物件的正z軸指向目標物件target所在的位置。但是對於2d物體的朝向,我們的目的就是要改變z軸,通過trans...