Unity之分辨率適配

一、分辨率適配思考

一套標準的分辨率,如: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到指定目錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章