1. 程式人生 > >【Unity技巧】調整畫質(貼圖)質量

【Unity技巧】調整畫質(貼圖)質量

寫在前面

當我們在Unity中,使用圖片進行2D顯示時,會發現顯示出來的畫面有明顯的模糊或者鋸齒,但是美術給的原圖卻十分清晰。

要改善這一狀況實際上很簡單。

造成這樣的原因,是Unity在匯入圖片(或者紋理)時會自動進行壓縮,以便減少執行時遊戲的記憶體佔用率,提供效能。

注意:下面例項使用的Unity版本為4.3.4。版本不同的話可能某些顯示不完全相同,但關鍵點是一樣的。

實現

我們以下列背景圖為例(大小為2048*640):
當我們把它作為背景顯示時,在Game介面會看到下面的效果:
可以發現,上面的畫質不怎麼盡如人意,例如左上角的帆船和右上角的皮球,有明顯的模糊和鋸齒。 觀察該圖片對應的Inspector面板(注意這裡的紋理型別是Sprite),如下所示:

其中對畫質有影響的部分,已經用紅框圈出。根據官網文件的解釋,其含義分別如下:
  • Filter Mode 當該紋理由於3D變換進行拉伸時,它將如何被過濾插值。共有三種選擇:
    Point單點插值,紋理將變得塊狀化(blocky up close);
    Bilinear雙線性插值,紋理將變得模糊(blurry up close);
    Trilinear三線性插值,類似Bilinear,但是紋理還會在不同的mip水平之間(between the different mip levels)進行模糊;

  • Max Size匯入的紋理的最大尺寸。因為美術人員往往喜歡使用較大的紋理進行創作,所以可以使用這個選項來選擇我們遊戲中適合的尺寸。

  • Format該紋理使用的內部表現格式。這是在大小和質量之間的權衡。共有三種格式:
    Compressed壓縮的RGB紋理。這是漫反射貼圖最長江的格式。每個畫素佔4bits(一張256*256大小的紋理將佔用32KB大小的記憶體);
    16 bit低質量的真彩(truecolor)顯示。每個畫素佔16bits;
    Truecolor真彩。這是最高的質量。一張256*256大小的貼圖佔用256KB(是Compressed的8倍,即每個畫素佔32bits)。
我們可以從Inspector面板的最下方檢視當前紋理的大小、格式和記憶體佔用率。如下所示,當前紋理大小為1024*320,將佔用160KB記憶體。
如果我們把Filter Mode改為Point,可以看到畫面明顯變得銳化了。仔細觀察影象中每個物體的邊緣,由原來的模糊變為塊狀化了。但畫質依然不好,可以看出有明顯的鋸齒。

我們將Filter Mode重新置回Bilinear前面提到原圖的大小為2048*640,而預設支援的Max Size是1024,這意味著Unity自動壓縮了圖片。我們把Max Size改為2048,並點選Apply後,可以看到畫質得到了明顯改善,鋸齒和模糊都有了變化:
而此時的記憶體佔用也提高到了0.6MB,比之前大了很多:
最後,我們嘗試把Format調整為Truecolor。得到效果如下:
可以看出來,畫質變化不大。但是記憶體佔用卻又提高了很多(3.8MB):
至此,我們可以認為適合該紋理的設定為Filter Mode為BilinearMax Size為2048,Format為Compressed

結束語

上述得到的結果是適合例子中的圖片。在實際應用中,不同的圖片要得到最好的效果設定可能不一樣。下面是幾點提示:
  • Max Size大於圖片的實際大小時,仍會使用原圖片的大小,所以如果想都使用原圖大小,可以直接都設定為4096。
  • 如果遊戲中有大量較大的圖片的是Truecolor格式,那麼會非常影響記憶體佔用率。所以,當選擇Compressed和Truecolor效果基本相同時,儘量選擇Compressed
  • 我們可以為不同的平臺設定不同的Max Size和Format。例如,在Android平臺上,由於效能不如IOS,可以選擇較低的畫質,而在IOS平臺上可以設定為最高畫質。


相關推薦

Unity技巧調整畫質質量

寫在前面 當我們在Unity中,使用圖片進行2D顯示時,會發現顯示出來的畫面有明顯的模糊或者鋸齒,但是美術給的原圖卻十分清晰。 要改善這一狀況實際上很簡單。 造成這樣的原因,是Unity在匯入圖片

Unity技巧四元數Quaternion和旋轉

四元數介紹旋轉,應該是三種座標變換——縮放、旋轉和平移,中最複雜的一種了。大家應該都聽過,有一種旋轉的表示方法叫四元數。按照我們的習慣,我們更加熟悉的是另外兩種旋轉的表示方法——矩陣旋轉和尤拉旋轉。矩陣

Unity技巧Unity中的優化技術

移動設備 完整 物體 動態 多少 each blank screen text 寫在前面 這一篇是在Digital Tutors的一個系列教程的基礎上總結擴展而得的~Digital Tutors是一個非常棒的教程網站,包含了多媒體領域很多方面的資料,非常酷!除此之外,還

個人Unity筆記烘焙光照後保留法線和光探頭

使用的5.34f1版本的unity 有時候為了節省開銷,烘焙光照貼圖是一種很好的辦法,在手機上開發經常會使用到,配合光探頭還可以讓靜態光和非靜態物體產生互動。 首先,把要烘焙的物體全部勾選為靜態(Static)。 然後,把需要烘焙的光的Baking由預

Unity&DragonBones紙娃娃替換身體部點陣圖片

DragonBones在2D畫素角色人物的紙娃娃系統的應用,如何替換身體部點陣圖片 UnityFactory.factory.ReplaceSlotDisplay使用方法請用如上所示連結 實現了更換部分身體部位的圖片 using System.Collec

Unity技巧統一管理回撥函式——觀察者模式

using UnityEngine; using System.Collections; using System.Collections.Generic; public class TimerController : MonoBehaviour { public delegate void OnC

POJ - 2663Tri Tiling 簡單dp

題幹: In how many ways can you tile a 3xn rectangle with 2x1 dominoes?  Here is a sample tiling of a 3x12 rectangle.  Input Input c

微信支付 統一下單 欄位 body 為中文時 報簽名錯誤解決方案C# SDK

方案一 如果你是從微信支付官網下載的 .NET C#【微信支付】API對應的SDK 呼叫示例 檢視原始碼,會發現這個SDK中的 WxPayData 的類的 CalcHMACSHA256Hash 簽名方法採用的是  Encoding.Default 

微信支付 統一下單 字段 body 為中文時 報簽名錯誤解決方案C# SDK

def salt ext var pri utf8 () rap vat 方案一 如果你是從微信支付官網下載的 .NET C#【微信支付】API對應的SDK 調用示例 查看源碼,會發現這個SDK中的 WxPayData 的類的 CalcHMACSHA256Hash 簽名

CodeForces - 215ABicycle Chain 水題

題幹: Vasya's bicycle chain drive consists of two parts: n stars are attached to the pedal axle, m stars are attached to the rea

HDU - 4185Oil Skimming 二分,建,匈牙利演算法

題幹: Thanks to a certain "green" resources company, there is a new profitable industry of oil skimming. There are large slicks of crude oil floatin

2018.11.07校內模擬異或數位DP數學期望

傳送門 解析: 蒟蒻考場上只想了隨機情況下的期望,於是就拿了部分分滾粗了。。。 其實最優情況下的期望我好像還推錯了,最後學習了標解才會的。 我好菜啊。。。希望今年NOIP不要打醬油就行了。 思路: 首先隨機的情況其實非常好想。我們只需要考慮每個位出現

CodeForces - 864AFair Game水題

Petya and Vasya decided to play a game. They have n cards (n is an even number). A single integer is written on each card. Before t

HYSBZ - 1088 掃雷Mine 簡單dp

題幹: 相信大家都玩過掃雷的遊戲。那是在一個n*m的矩陣裡面有一些雷,要你根據一些資訊找出雷來。萬聖節到了 ,“餘”人國流行起了一種簡單的掃雷遊戲,這個遊戲規則和掃雷一樣,如果某個格子沒有雷,那麼它裡面的數字 表示和它8連通的格子裡面雷的數目。現在棋盤是n×2的,第一列裡面某些格子是雷,而第

NOIP 2018保衛王國動態dp

題目連結  這個$dark$題,嗯,不想說了。雖然早有聽聞動態$dp$,但到最近才學,如果你瞭解動態$dp$,那就能很輕鬆做出這道題了。故利用這題在這裡科普一下動態$dp$的具體內容。 首先大家肯定都會這道題的$O(n^2)$的做法,這是一個很經典的樹形$dp$。具體來講就是一下兩個轉移: $

POJ - 2342Anniversary party樹形dp

There is going to be a party to celebrate the 80-th Anniversary of the Ural State University. The University has a hierarchical structure of employe

BZOJ- 1293生日禮物 尺取法

小西有一條很長的綵帶,綵帶上掛著各式各樣的彩珠。已知彩珠有N個,分為K種。簡單的說,可以將綵帶考慮為x軸,每一個彩珠有一個對應的座標(即位置)。某些座標上可以沒有彩珠,但多個彩珠也可以出現在同一個位置上。 小布生日快到了,於是小西打算剪一段綵帶送給小布。為了讓禮物綵帶足夠漂亮,小西希望這一段綵帶

CodeForces - 340CTourist Problem 組合數學

Iahub is a big fan of tourists. He wants to become a tourist himself, so he planned a trip. There are n destinations on a straight road th

排序演算法氣泡排序Bubble Sort

一、簡介 氣泡排序(Bubble Sort)也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。 二、

EOJ3652乘法還原二分

題意: 思路:Orz Claris 先找出所有平方項,將與有平方項的數有關的數對暫時忽略,剩下的直接連邊就是一張二分圖,暴力DFS染色 將有平方項的數兩邊都加一個,再判字典序即可 我不會判字典序……耽誤了一個下午 1 #include<cstdio> 2 #includ