圖片與字型
能用形狀就用形狀:它沒有檔案,不佔記憶體,也沒有版權問題。圖片尺寸與它在螢幕上佔的位置相當即可,移動端關卡不超過2048,其他情況不超過4096
圖片尺寸向上取整到2的冪
格式與尺寸
引擎能從檔案位元組中解碼的格式都能載入。實際上就是png和jpg
遊戲不限制檔案大小,限制來自硬體:
| 裝置 | 最長邊 |
|---|---|
| Android,保證支援 | 4096 |
| Android,通常 | 8192到16384 |
| 桌面PC | 最多32768 |
記憶體
真正的限制是記憶體。無論檔案多大,圖片在記憶體中都以原始畫素儲存。png每個畫素佔4位元組。jpg佔3位元組,因為它沒有透明度
| 尺寸 | 記憶體(png) |
|---|---|
| 512×512 | 1MB |
| 1024×1024 | 4MB |
| 2048×2048 | 16MB |
| 4096×4096 | 64MB |
| 8192×8192 | 256MB |
一張8192的紋理,單張圖片就要佔四分之一GB。在手機上這不是變慢,而是崩潰
由玩家決定的部分
每個玩家的圖形設定中有三項決定圖片佔用多少記憶體:
- 載入時是否壓縮圖片。壓縮會把上面的數字除以4到8
- 圖片在記憶體中的最長邊。邊長減半,記憶體變為四分之一
- 是否生成Mipmap,也就是用於小尺寸繪製的縮小副本
手機預設壓縮圖片,並限制在2048。桌面PC保留完整圖片,並限制在4096
你需要做的是填寫圖片上的欄位,首先是圖片上畫的是什麼。這些欄位位於資源列表中圖片的旁邊。照片最能承受縮小和壓縮。邊緣銳利的繪圖承受得較差
畫素畫從不生成Mipmap,無論裝置傾向於怎樣處理。它預設也不壓縮、不平滑,這可以通過壓縮和取樣欄位修改
Mipmap
Mipmap可以防止小圖片閃爍。它們是縮小的副本,圖片在螢幕上顯示得很小時,會代替完整圖片繪製。它們會多佔用三分之一的記憶體
沒有Mipmap時,縮小的圖片不會變平滑,而是會出現波紋。玩家可以關閉Mipmap,而畫素畫永遠不會有Mipmap
一張在螢幕上只佔200畫素的4096圖片,佔用的記憶體是預先縮小到256的同一張圖片的256倍
形狀優先於圖片
形狀在各方面都比圖片便宜:沒有檔案,不佔記憶體,沒有版權問題。內建形狀是真正的幾何體,而不是貼在矩形上的圖片。它們沒有會被繪製然後丟棄的透明邊緣
這在手機上很明顯。在中端移動晶片上,一個有1000個物體的場景會把95%到97%的GPU時間花在畫素著色上。一個形狀只覆蓋自身矩形的29.4%。帶紋理的四邊形其餘部分都是透明的浪費
真正需要一張畫面時才需要圖片:標誌、照片、手繪作品。幾何圖形請使用形狀。沒有需要的形狀,就在形狀編輯器中畫出來
字型
字型可以載入ttf、otf、ttc格式。沒有自帶字型時,文本會用系統中現有的字型繪製,而不同裝置上的字型各不相同
字型快取是預先準備好用於繪製的字元集合。一個生成器會根據關卡中包含的文本重新構建它。等文本不再變化後再執行這個生成器