unity 2D 正交攝像機下 uGUi 比例與自適應問題
阿新 • • 發佈:2019-02-09
unity自帶的UGui普遍都有rect transform屬性
orthographic攝像機下 如果size是1 那麼半個高度的ugui canvas就是1單位長度, 一個cube是1米 1米1單位
Unity2D中攝像機鏡頭的尺寸決定了我們實際看到遊戲內容的多少,Unity2D中這個比例的預設值是100,即100畫素等於1單位,1個單位是1米。如果我們的遊戲螢幕有640畫素高,那麼實際換算成單位高度則是6.4個單位,當我們攝像機的 Size值是3.2時,攝像機大小剛好與螢幕大小相等。
已知canvas有三種模式
然後我採用的是Screen Space - camera
因為overlay模式不用攝像機都會顯示UI,所以不能使用兩個攝像機方式將其他物體顯示在其之前
而world space則更多利用在3D場景中,如果攝像機轉動ui也會出現問題,需要比較多的設定才行
然後設定UI Scale Mode 為Scale With Screen Size(下面填上你需要的解析度 我設定的是1920*1080)
注意主攝像機必須是正交攝像機而且size必須是1080/2/100也就是5.4 才能正常
而ui的移動(基於畫素可以使用下面兩種方式a b都是Button)
a.transform.Translate(960.0f/100.0f,0,0);
b.GetComponent<RectTransform>().localPosition = new Vector3(960,0,0);
另外放上一張自己畫的ugui和rect transform的理解圖