圖片資源使用注意事項(xiàng)

2020-02-13 17:48 更新

不規(guī)范的資源管理方式,容易導(dǎo)致游戲加載速度慢、運(yùn)行內(nèi)存大,影響游戲的體驗(yàn)和性能。下面列出一些需要注意的地方:


優(yōu)先 png 格式

UI 輸出資源時,應(yīng)該優(yōu)先使用 png 格式而不是 jpg 格式。png 格式采用無損壓縮算法,jpg 使用的是有損壓縮算法,用 png 格式輸出資源,獲得的圖片質(zhì)量是好于使用 jpg 格式的。如果圖片的大小比較大,可以使用 tinypng、pngquant 這類的工具提高壓縮率(有損壓縮)或者使用 ect2 等格式的壓縮紋理。但是最好使用初始的 png 圖片而不是用 tiny 等工具壓縮后的 png 圖片生成壓縮紋理,因?yàn)閴嚎s紋理也是采用有損壓縮算法。多次對圖片使用有損壓縮算法進(jìn)行壓縮,會進(jìn)一步降低圖片質(zhì)量,導(dǎo)致資源效果差。


控制尺寸

在保證外觀效果的情況下,盡可能地減小圖片尺寸。以臉萌沖撞游戲,球的臉表情為例,最初版本為 512x512 尺寸,后面優(yōu)化成 128x128 尺寸。80 張 512x512 尺寸的 RGB888 png 圖片,需要占用 80x512x512x3byte = 60M 內(nèi)存,而優(yōu)化成 128x128 尺寸后,僅需要 80*128*128*3byte = 3.75M 內(nèi)存。占用內(nèi)存減少了 93.75%。像海水這種模式重復(fù)的場景,也盡量使用較小尺寸的紋理。

圖片名稱


修剪透明部分

下面左邊的圖片,一半的面積,都是透明部分,浪費(fèi)大量的空間,在 UI 輸出資源時應(yīng)該盡量避免,或者用工具修剪掉透明部分。右邊是修剪后的圖片。尺寸由 750*375 變?yōu)?466*284,占用內(nèi)存減小 50%。

圖片名稱


合并圖片

合并圖片的目的是為了減少引擎讀取文件的次數(shù),加快加載速度。合圖的關(guān)鍵問題是,合出的大圖, 空間利用率是否足夠高 ,較低的空間利用率,會造成游戲運(yùn)行內(nèi)存的增大。合圖要注意的幾個問題如下:

  1. 應(yīng)該盡量只對尺寸比較小的圖,進(jìn)行合圖操作。尺寸大于 256x256 的圖片,要考慮下。
  2. 合出的整張大圖,尺寸不要太大,一般不大于 1024x1024,最好不要超過 2048x2048。
  3. 盡量保證合圖的利用率,不要低于 75%(越高越好)。實(shí)際上 1 和 2 也是可以提高合圖利用率的。合圖時,記得打開允許旋轉(zhuǎn)選項(xiàng),這也能夠提升利用率。導(dǎo)出格式選用 RGBA8888。
  4. 盡量保證關(guān)聯(lián)性大的圖片合并在一起。比如同一界面的資源,應(yīng)該優(yōu)先合在一張圖上,而不是放在多張圖里,這樣子保證可以一次操作就可以讀取或者傳送整個界面需要的資源。


資源復(fù)用

對尺寸比較大的資源,盡量進(jìn)行復(fù)用。像界面背景圖片這樣的資源,應(yīng)該抽取出,單獨(dú)出資源。

圖片名稱


九宮格拉伸

當(dāng)界面資源要顯示的圖片尺寸比較大,且中間部分是由連續(xù)有規(guī)則的像素組成時,通常使用九宮格拉伸的辦法,大幅度減小圖片尺寸的大小。對于可以進(jìn)行拉伸的圖片,劃分成以下 9 個部分:

圖片名稱

拉伸規(guī)則如下:

  1. 四個邊角 1、3、7、9 不做任何拉伸
  2. 2、4、6、8 做單向拉伸,2、8 做橫向拉伸,4、6 做縱向拉伸
  3. 5 做雙向拉伸

下面的圖片尺寸是 612*946,格式是 RGBA8888,如果使用九宮格拉伸的辦法,那么尺寸可以做到小于 300*300,占用內(nèi)存減小 80%以上。

圖片名稱


壓縮紋理

像場景貼圖、界面背景圖等資源,占用內(nèi)存比較大,但為了保證效果,不能去減小尺寸,這種情況下可以考慮使用壓縮紋理。壓縮紋理采用的是有損的壓縮算法,一般效果都是可以接受的。下面是兩張對比圖:左邊是 s3tc 格式的壓縮紋理資源,右圖是未壓縮的圖片資源。對比下兩張資源圖,大部分地方肉眼不容易識別出差別,左邊圖片在邊緣細(xì)節(jié)上,要差一些(可以雙擊放大看)。

圖片名稱

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號