一、分辨率適配思考
一套標準的分辨率,如:1920*1080,在發佈後快速適配不同機器的分辨率,省事省錢。
程序目標:通過對Resulotion的動態配置,達到發佈後所有UI物體自動適配當前設置的Resulotion的目的。
二、核心代碼
1.對CanvasScaler進行設置
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
canvasScaler.referenceResolution = realResulotion;
canvasScaler.screenMatchMode = CanvasScaler.ScreenMatchMode.Expand;
canvasScaler.matchWidthOrHeight = 0.5f;
2.對UI物體進行設置
Vector2 size = rectTransform.sizeDelta;
Vector3 pos = rectTransform.localPosition;
if(realResulotion != standardResulotion) {
float widthPrecent = realResulotion.x / standardResulotion.x;
float heightPrecent = realResulotion.y / standardResulotion.y;
rectTransform.sizeDelta = new Vector2(size.x * widthPrecent, size.y * heightPrecent);
pos = new Vector3(pos.x * widthPrecent, pos.y * heightPrecent, 0);
}
rectTransform.localPosition = pos;
三、擴展方向
1.自動關聯不同機器下對應的不同分辨率圖片掛載到UI物體;
2.當前採用的思路是保持一個分辨率的比例,儘量使UI物體的間隔距離一致和整體佈局與預設分辨率情況一致,但是會在較大差異分辨率之間導致UI物體的形變比較嚴重;
3.打包成dll或插件,在導入Unity時自動創建MutiResulotionMatcher/Config.xml到指定目錄。