在遊戲開發過程中,為了ui介面美觀和顯示效果一致性的考慮,大部分遊戲都會使用動態字型來表現文字。尤其在這個看臉的時代,一種字型已經無法滿足ui同學對美觀的需求,因此我們常常發現若干個小則兩三兆,大則十幾兆的字型檔案,這些檔案既佔包體又佔記憶體。因此,對字型的合理使用和優化已經成為專案中後期優化必不可少的乙個步驟。這裡介紹《極無雙》團隊對於字型裁切的思路和方法。
同時,作者也是u sparkle活動參與者哦,uwa歡迎更多開發朋友加入 u sparkle開發者計畫,這個舞台有你更精彩!
一、問題描述
我們《極無雙》專案中使用了兩套字型檔。黑體字體來顯示大部分既定文字、玩家暱稱、對話等。隸書字型來特殊顯示一些標題、武將姓名、稱號、重要對話等需要著重美化顯示的文字。
開始優化前,我們習慣性地在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中使用的字型檔案
問題描述 我們 極無雙 專案中使用了兩套字型檔。黑體字體來顯示大部分既定文字 玩家暱稱 對話等。隸書字型來特殊顯示一些標題 武將姓名 稱號 重要對話等需要著重美化顯示的文字。開始優化前,我們習慣性地在uwa平台上 www.uwa4d.com 提測了一下,在得到的報告中檢視 記憶體管理 具體資源資訊 ...
unity字型檔精簡
有2種辦法,具體看情況使用 1.unity自帶功能 選擇放入的字型,修改character項為 custom set 接著出現custom chars中輸入你想使用的字串,字元重複無所謂,因為最終會自動過濾掉重複字元.如輸入 你好世界 那麼整個字型最終只包含 你好世界 這四個字的 字元貼圖,也就是你...
Unity中使用LookAt的坑
當實現乙個物體朝向乙個點時,通常使用transform.lookat。對於3d物體沒有問題,但是對於2d物體,會出現奇怪的效果,這樣因為api的原理,它的官方解釋是這樣的 旋 身,使得當前物件的正z軸指向目標物件target所在的位置。但是對於2d物體的朝向,我們的目的就是要改變z軸,通過trans...