這個5表示攝像機的視距
代表攝像機拍攝的一般高度
如果16:9的分辨率,100像素為1 unity單位的情況
填充攝像機所需圖片大小尺寸為:高度:5*2*100 = 1000 寬度:1000*16/9 = 1778 【1778*1000】
上面這2張圖,一個y坐標為 -3.5 ,一個為 -4 ,圖片的pixel per unit為200
可計算出2圖之間的像素為:0.5 * 200 = 100 像素
如果我們把圖的pixel per unit改為100
他們的圖片會直接放大,但是他們的坐標不變,此時他們之間的距離為 0.5 *100 = 50像素
雖然他們之間的距離像素會發生變化,但是他們之間的unity單位是始終保持不變的,一直是0.5
由此我們可以得到一個游戲素材分辨率轉換思路
我們可以改變游戲素材的尺寸,但是不會改變他們在unity里面的大小
比如一個pixel per unit為100,寬高也為100的圖,現在要對他進行低分辨處理
我們把100*100改成 50*50 ,縮小一倍,然后把pixel per unit也縮小一倍,也就是50即可
高清化則反之,100*100改成200*200 ,pixel per unit改成200
高清化的作用
一般我們設計分辨率固定下來后,放大攝像機視距,場景素材會放大,高清化使得放大后的素材不模糊
具體看比例,比如我們正交攝像機size為5,設計分辨率【1920*1080】,推導出鋪滿場景需要【1778*1000】,則攝像機視角最多放大1000/1080 = 0.92倍,物體不會模糊,這個數字是小於1,沒錯,嚴格來講1080p不應該使用這個size。
如果我們正交攝像機size為14.2,設計分辨率【1920*1080】,推導出鋪滿場景需要【5049*2840】,則攝像機視角最多放大2840/1080 = 2.62倍,物體不會模糊
逆向推導,1080p設計分辨率,1080/100/2=5.4,size至少5.4才是達標的size,所以我們推薦的正交攝像機的size最好是 5.4 至 10,在pixel per unit為100的情況
同時size過大也不好,因為需要繪制更大的素材。算好你的游戲正常視角和最大的視角,來決定你的size。一般來說在最大視角上圖片不模糊就是你的正確的size。這種最大視角不應該過大,因為這個比例越大其實就是越浪費。而你的游戲有多少種情況是處於這種放大情況的呢。更不用說在移動平台上更需要節省資源來避免這種資源上的浪費。谷歌商店對安裝包體積大小具有100Mb限制,再大需要開發者自行分包,移動平台上安裝包越小更有優勢
最后算了一下,透視攝像機,z為-10.16 的情況,要達到5.4標准,Field of view 值為56
如果調整了pixel per unit 那么每次導入的圖片則需要設置一下
項目添加如下腳本
using UnityEngine; using UnityEditor; public class SpritePixelsPerUnitChanger : AssetPostprocessor { void OnPreprocessTexture () { TextureImporter textureImporter = (TextureImporter) assetImporter; textureImporter.spritePixelsPerUnit = 100;//自行設定數值 } }