untiy exe 使用 bc7 壓縮圖檔
開始進行許久未動的工作,將游戲打包資源縮小,有鑒於之前老早寫好了 buildinfo
打包出來呢,大概主要以 texture2D 為主,如下:
【按類型統計】
| 類型 | 數量 | 總大小 |
|---|---|---|
| UnityEngine.Texture2D | 3037 | 10.97 GB |
| UnityEngine.AudioClip | 474 | 193.13 MB |
| UnityEngine.TextAsset | 1445 | 47.55 MB |
| UnityEngine.Font | 9 | 16.01 MB |
| UnityEngine.Sprite | 5219 | 12.34 MB |
Asset Type Summary
| Type | Count | Total Size | % |
|---|---|---|---|
| UnityEngine.Texture2D | 3003 | 10.57 GB | 97.4% |
| UnityEngine.AudioClip | 474 | 193.12 MB | 1.7% |
| UnityEngine.TextAsset | 1436 | 46.6 MB | 0.4% |
其實也挺正常的,不過還是有縮減的空間,項目是打包 exe 的,所以就采用了 BC7 壓縮,如下設定:

這邊呢厘清幾個信息點,之前已經沒仔細去探討的
1、為什麼圖檔明明 13.9MB → 64MB?
PNG 是壓縮格式,存的是壓縮後的資料。
Unity 匯入後會解壓成 原始像素資料 存入 VRAM,方便 GPU 直接讀取:
4096 × 4096 × 4 bytes (RGBA8) = 67,108,864 bytes ≈ 64 MB
GPU 不能直接讀 PNG,它需要每個像素都展開成原始值,所以一定會比檔案大很多。
2、改成 BC7 預期大小?
BC7 的壓縮率是 固定 4:1(每像素從 4 bytes → 1 byte):
4096 × 4096 × 1 byte = 16,777,216 bytes ≈ 16 MB
從 64MB → 約 16MB,節省 75%。
3、BC7 的優缺點
| 說明 | |
|---|---|
| ✅ 畫質最佳 | 同類 Block Compression 中畫質最高,幾乎無損 |
| ✅ 支援 Alpha | 完整支援 RGBA,適合有透明的貼圖 |
| ✅ 節省 VRAM | 比 RGBA8 少 75% |
| ✅ GPU 原生解壓 | 讀取速度快,不增加運行負擔 |
| ❌ 壓縮時間慢 | Build/Import 時 CPU 壓縮耗時較長 |
| ❌ 僅限 PC/Console | 手機平台(Android/iOS)不支援,需改用 ASTC |
| ❌ 有損壓縮 | 極細緻漸層或法線圖仍可能有輕微瑕疵 |
後面就不複雜了,無非就是套用 BC7 或是設定規則套用,我在這邊做了幾個不一定的條件設定
- 使用工具根據項目跟 condition 做 BC7 處理
- 加入 TextureImporter 但不開啓
主要必須思考這件事決定權不在程式身上,所以必須將功能設計的通透點(就是可擴展性+嘗試性)
也不復雜就是篩選幾個目錄,跟不同條件,可以看看

套用后的畫面我就不貼上來了,我自己是看不太出來區別,容量大概少了25%吧,從 10G 降低到 7.8G


咋看之下覺得還可以,但想到美術進行了無效圖檔的刪除,這個容量少的比例似乎有點微妙;查看了下,目前 BC7 處理的檔案數量大概為 21%,也難怪實際節省的比例并沒有想象的大,不過也算是有效果就是
游戲運行也能看出來實際減少的部分
這是原版

這是 BC7 版本
