1. 程式人生 > >Unity UGUI螢幕自適應

Unity UGUI螢幕自適應

轉載http://blog.csdn.net/lyh916/article/details/50865541

參考連結:

http://www.jianshu.com/p/96fd1fbe8409

http://blog.sina.com.cn/s/blog_4148e8630102vji9.html

http://www.xuanyusong.com/archives/3278

關鍵點:

0.自適應的測試:通過設定多種的螢幕大小進行測試,測試時最好要開啟Maximize on Play,在螢幕放大的情況下容易觀察自適應情況


1.所謂的自適應,就是:

a.保持相對位置不變。例如UI設計在螢幕的左上角,那麼在各種的解析度下都應該在左上角

b.保持寬高比例不變。由於解析度有很多種,所以保持寬高等比例縮放是做不到的,要麼是寬拉伸縮放的程度大些,要麼是高拉伸縮放的程度大些

2.在UGUI中,可以通過設定UI的描點來設定UI的相對位置;可以通過設定Canvas下的Canvas Scaler來設定UI的縮放比例(Canvas下的Canvas是用來處理UI遮擋關係的)

3.Canvas Scaler元件:

a.當UIScaleMode為Constant Pixel Size時,UI在任何解析度下都不會進行縮放拉伸,只有通過改變Scale Factor才會進行縮拉,因此不推薦使用該模式(而這種模式的優點就是你可以通過寫自適應演算法來改變Scale Factor的值,代替unity的自適應演算法)

b.當UIScaleMode為Scale With Screen Size時,相當於使用unity的自適應演算法,此時unity會根據螢幕解析度自動調節Scale Factor的值。在做自適應時,一般要先選擇一種比較主流的解析度(即比較多的機型都採用這種解析度)進行UI的設計,例如採用1024x576,在這裡就是設定Reference Resolution的值了。

然後就是Screen Match Mode這個東西了:

當值為Match Width Or Height時:當值為0即處於Width那端時,表示螢幕高度對於UI大小完全沒有任何影響,只有寬度會對UI大小產生影響。例如設定螢幕為800*600,然後改變為800*300,螢幕高度變小了,但UI並沒有進行縮拉;同理當值為1即處於Height那端時,表示螢幕寬度對於

UI大小完全沒有任何影響,只有高度會對UI大小產生影響

當值為Expand時:舉個例子,設計了一個button寬高為200*100,即寬高比為2:1,放在4:3的螢幕內;然後把這個button放在16:9的螢幕內,顯然地,此時button是不能進行等比例的縮放的,即無法保持2:1的寬高比了,Expand的意思就是儘可能地使UI拉伸來適應螢幕

當值為Shrink時:同理,就是儘可能地使UI縮放來適應螢幕

4.一般來說,比較不錯的設定就是:

Canvas Scaler 選擇 Scale With Screen Size

Screen Match Mode 選擇 Match Width Or Height,比例設為1,即只和高度進行適配