Unity相機自適應背景

2021-08-21 18:29:36 字數 968 閱讀 6460

在 unity 3d 中可以把攝像機設定為正交。正交攝像機與 unity 3d 中普通攝像機相比沒有透視效果(近大遠小),所以正交相機一般可以用於 2d 遊戲開發或者是 3d 遊戲的 ui 開發。

在 2d 遊戲開發中,有時會遇到根據螢幕的解析度對遊戲的背景進行自適應縮放的需求,這就需要對正交攝像機的尺寸也就是顯示範圍有一定的了解。

在正交相機中唯一與顯示範圍相關的屬性只有乙個,那就是 size,單位為 unity 單位。這個屬性的值代表了攝像機在縱向上一半的顯示範圍。舉例來說,如果把 size 設定為5,那就意味著這個攝像機在縱向可以顯示10個 uinty 單位。攝像機的 size 是不會隨著螢幕的解析度而變化。而攝像機橫向的顯示範圍則是會發生變化的,uinty 3d 通過螢幕的寬度除以高度獲 camera.aspect,再通過縱向的顯示範圍乘以 camera.aspect 獲得攝像機橫向的顯示範圍,這就保證了攝像機的顯示範圍可以覆蓋整個螢幕。

在通常情況下,使用 unity 單位來對遊戲中的物件(例如:rigidbody,collider)的大小進行調節就夠了,但是要調節一些素材的大小時就需要考慮到畫素(pixel)和 unity 單位之間的轉換。那麼問題就來了,畫素和 unity 單位之間的轉換關係是怎麼的呢?準確的說,他們兩者之間的關係是不固定的,這取決與在匯入素材時」pixels to units」這一屬性的值,在預設情況下這個屬性的數值為100,也就是說100畫素等於1個 unity 單位。

了解這些知識之後,再根據螢幕的解析度來做遊戲背景的自適應就會很容易了。首先,使用攝像機的 size 和 aspect 計算出以 unity 單位為單位的螢幕長寬。然後,根據」pixels to units」的值算出以畫素為單位的長寬。同理,對於背景素材,首先通過 gameobject.render.bounds.size 獲取以 unity 單位為單位的素材大小,然後轉換為畫素大小。知道了背景和素材的畫素大小後就可以很容易地得出他們之間的比例,最後通過調節背景的 transform.localscale 就可以達到背景自適應的目的了。

背景自適應

一張清晰漂亮的背景能給網頁加分不少,設計師也經常會給頁面的背景使用大圖,我們既不想因為不同解析度變形,也不希望當在大屏的情況下,背景有一塊露白,簡而言之,就是實現能自適應螢幕大小又不會變形的背景大圖,而且背景不會隨著滾動條滾動而滾動。用css實現真的很簡單很簡單,下面我們來看一下第一種方法具體的 你...

UGUI 字型背景尺寸自適應

在ugui裡,我們有時需要做類似對話方塊這種東西,還需要對話方塊可以隨著裡面文字多少,行數的變化,進行拉伸變化。我第一時間想到的解決方案是自己計算對話的char長度,然後動態的去修改背景圖的尺寸,這種方法乍看之下沒有任何問題,但是在實際應用中,發現有致命的缺陷。那就是當對話的文字可能是多語言的時候,...

網頁背景自適應大小

前幾天在做乙個網頁想把乙個解析度比較大的乙個背景自動適應視窗大小,但是網上搜了下大都是使用 js控制網頁背景隨視窗大小自動適應的,而且大都效果不理想,最後終於找到了乙個簡單的辦法 本來是想看看css能不能實現背景自動適應視窗的的,但是可惜的是在css2中,背景圖的大小在樣式中 是不可控的,比如要想使...