Unity基礎篇 使UI跟隨螢幕解析度變化自適應。

2021-08-27 18:42:31 字數 1462 閱讀 4468

當我們使用unity的ugui設計遊戲ui的時候,不得不考慮在不同解析度機器下ui的縮放以及位置的自適應。今天我們就來討論一下這個問題。

畫素大小始終不變,即乙個100*100的在任何的解析度下都占用100*100的畫素。簡單比較好理解。scale factor是表示縮放倍數。比如是2時,即將上面整體是縮放兩倍是不變形的。

這種模式應用場景多一點。首先逐個說明下:

1)reference resolution是開發時的解析度。以後縮放就參考它。

2)screen match mode 又包含三種模式

* match width or height。下面包含乙個macht屬性,當處於最左邊時,螢幕高度對於ui大小完全沒有任何影 響,只有寬度會對ui大小產生影響。假設寬度為reference resolution寬度的x倍,則ui整體縮放為reference   resolution設定引數的x倍。也就是說只有寬度等於reference resolution寬度時,才能做到pixel perfect,否則畫素就會有拉伸 ,當處於最右邊時,與上述情況正好相反,決定整體縮放值的是高度,而寬度則沒有任何影響 ,處於中間某處時,對上述兩者的影響進行權重加成 。所以一般我們都把其放在0.5的位置(0.618也很舒服哦)。

* expand 縮放不剪下:當螢幕解析度與設定不同時,選擇變化較小的乙個方向(橫向還是縱向),進行縮放顯示

,它會保證設計時解析度能顯示出來的縮放後依然能顯示出來。

* shrink 縮放剪下:當螢幕解析度與設定不同時,選擇變化較大的乙個方向(橫向還是縱向)進行縮放顯示

,對於超出的部分剪下不顯示。

保持物理上不變的方式,這個應用場景較少,具體是這樣的,比如你電腦解析度是  1000*2000而你的手機解析度也是1000*2000。雖然電腦螢幕比手機螢幕大的多,但是他們最後顯示出來的物理大小是一樣的。

首先我們設定好canvas引數,假設我們開發基準為480x800的解析度。

然後在canvas下面建立4個button,並設定錨點分別對應四個角落,對ugui的recttransfrom不熟悉的同學可以去看下這位博主的文章。

這是480x800的顯示效果

這是1920x1080的顯示效果,大功告成!

canvas scaler適配模式部分摘自

Unity中UI跟隨3D物體 即HUD效果

今天簡單的測試了unity中ui跟隨3d物體,使用unity版本 5.6.4。首先想到的有兩種思路 1 第一種方法基於recttransformutility.screenpointtoworldpointinrectangle和 camera.main.worldtoscreenpoint這兩個方...

Unity基礎知識篇

1.程式集是什麼?2.assembly csharp.dll是什麼?3.assembly firstpass csharp.dll是什麼?4.unity有哪些特殊的目錄?editor 在這裡可以存放一些編輯器擴充套件指令碼,這個目錄裡面的指令碼可以使用namespace unityeditor。對於...

Unity基礎篇 Mathf類

void start 輸出結果 列印出的最小值是0 cube transform.translate new vector3 a5,0,0 time.deltatime gameobject.find cube transform.translate new vector3 a5,0,0 執行結果 ...