Unity3D 遊戲畫面畫素與單位關係簡介

2021-08-10 15:18:25 字數 2566 閱讀 6720

1.遊戲畫面畫素-》unity3d單位(unit)

可以看到螢幕中,正交相機的視口高度,剛好可以填滿乙個單位的cube,注意2點

1.圖中cube 的縮放xyz設定的都是1,這樣cube 就是預設的乙個unity3d單位的長寬高

2.正交相機的視口大小size 設定的是0.5而不是 1

也就是說正交相機的視口大小size 的意義是: 本正交相機輸出的遊戲畫面的高度的一半對應到是多少個unity3d 單位

再看看game view的效果

可見,我們不論怎麼修改 game view 解析度,場景中,那個乙個unity3d單位長寬高的cube 始終是填滿畫面的高度,但是我們看看cube 兩邊的天空盒占用的範圍發生了改變,可見對於乙個正交相機輸出的遊戲畫面來說,視口高度可見的unity3d單位數量是不變的,也就是我們設定的size*2,視口寬度可見的unity3d單位數量,是根據輸出畫面的高度解析度和寬度解析度的比例,乘上當前設定的size 得到的。所以我們一定要分清這幾組設定之間的對映關係

unity3d 單位*****》size 視口大小(決定相機視口高度可以看見多少個unity3d單位(需乘2))===》game view 畫面高度解析度(決定相機視口高度可以看見的unity3d單位數量,

總共對應到多少個螢幕畫素)

明白上面的對應關係,在畫面的排版上就游刃有餘了

有小白可能會問 game view 中的 scale 的設定為什麼不是1,這個設定會否影響設定之間的對映關係 ,其實這個是因為我的螢幕太小,gameview 無法顯示全我設定的解析度畫面,所以對相機的輸出畫面做了等比例縮放而已,並不影響上面設定之間的對映關係。

還有的人可能會問,如果是移動開發,不同的手機螢幕解析度不同,會有影響到設定之間的對映關係嗎?其實不同的手機螢幕,只是解析度不同而已,就相當於我們的 gameview 設定不同的解析度,所以也不會影響到我們上面列出的對映關係

2.遊戲畫面畫素-》unity3d單位--》精靈

有人會問不同的手機解析度下,使用的精靈是如何顯示的呢?螢幕解析度與精靈畫素之間的對映關係如何?

其實他們之間的對映,只不過是我們上面已經講解的,遊戲畫面畫素-》unity3d單位 對映關係的繼續推導,我們上面已知道了根據遊戲畫面畫素如何推導出unity3d單位所對應的畫素,但與精靈的畫素大小的對映之間,

他們並不是一一對應的!!

影響這個對應關係的地方,就是設定面板中的 pixels per unit 項,其意義是: 本的畫素與unity3d 單位之間的對映比例,

乙個unity3d單位對應多少個畫素,(注意:之前我們第一節講的是多少個螢幕畫素對應到乙個unity3d單位,千萬別搞混了)

大家可以看到,圖中精靈的高度剛好填滿,正交相機輸出的畫面高度,這是應為,

精靈的pixels per unit 設定的是320,也就是的320個畫素對應到乙個unity3d單位,而我的正好就是320畫素的高度,而我之前設定的正交相機的size 是0.5 ,也就是相機視口高度對應到乙個unity3d單位,所以就正好可以顯示整張的高度了。

但是大家看,圖中我的gameview 檢視中的解析度是1920*1080,我的精靈在相機輸出畫面顯示的高度實際為1080,這又是為什麼呢?

我想,如果你是認真的看完了上面的內容,這裡自己已經知道為什麼了,因為我們的正交攝像機的視口高度是1個unity3d單位,所以輸出的畫面高度就對應到1個unity3d單位,而我們的精靈高度也正好是1個unity3d單位,高度正好站滿整個輸出畫面的高度,所以才會顯示為輸出畫面高度的畫素大小1080,可能很繞,我們還是捋一下對映關係吧。

(精靈畫素) ==》(

pixels per unit 決定精靈畫素和unity3d單位的對應關係) ==》unity3d單位 ==》size 視口大小(決定相機視口高度可以看見多少個unity3d單位(需乘2)) ==》攝像機輸出畫面高度解析度(決定相機視口高度可以看見的unity3d單位數量,

總共對應到多少個螢幕畫素)

有了上面的對映關係流程,你應該明白為什麼我320個畫素高度的精靈,顯示在螢幕上市1080個畫素的高度了吧。其實透視相機和正交相機的畫素對映關係是一樣的,只不過正交相機容易看清楚,所以這裡就用的正交相機,其實你明白了正交相機的對映原理,透視相機也應該明白差不多了。自己平時多使用幾次也就明白了。

Unity3D遊戲開發

入門級unity安裝教程 一 unity五大面板 unity3d的介紹 1 介面 選單 面板 元件 unity5.x 編輯器介紹 unity開啟篇 一 滑鼠右鍵 wsadeq前後左右上下移動 shift加速移動 滑鼠右鍵旋轉檢視 滑鼠中鍵移動檢視 alt 右鍵縮放 alt 左鍵旋轉物體視角 q移動場...

Unity3D遊戲開發初探

1 如何在遊戲指令碼程式中建立物件而不是一開始就建立好物件?使用gameobject的靜態方法 createprimitive view code 其中在createcube方法中,使用gameobject.createprimitive方法來建立cube型別的遊戲物件例項,設定了它出現的座標並為它...

Unity3D 單例模式

先宣告乙個靜態私有變數,如 instance 再宣告乙個靜態公共方法,如 getinstance,在該方法中判斷instance為null時,通過gameobject.findobjectoftype typeof myclass 建立instance的例項 在c 中直接new乙個新的例項 不為nu...