Unity 中的锚点适配 - NGUI

Unity 中的锚点适配 - NGUI

刚入职分的第一个小工作去做适配。

分辨率

为图片做适配,分辨率主要几种,但分辨率是一个区间值。
pad :1080 * 1440
mobble :1080 * 1920/2190
iphonex : 1125 * 2436

Method

通过代码

预制体调整成1920 在代码里为1440 2190做适配即可
图片的setAnchor方法
做适配时根据设置锚点的方式来调整图片的大小

1
2
3
4
5
6
7
8
9
10
11
12
local var = self.window:ComponentByName("dir",typeof(UIType))
var:SetAnchor(parent.gameObject,left,length,bottom,length,right,length,top,length)

--其中 :
left/bottom 为 0
right/top 为 1
center 为 0.5

--设置pos的接口
local var = self.window:NodeByName("dir")
var.localPosition = Vector3(0,0,0)
-- 这种思路应该是可行的,但目前有点问题,后续此博客会调整

通过锚点

ref - privot 形式 ref为窗口边角的方块,privot 方块边界的点,常用为上边中心,也可为顶点。
目标图形的锚点为privot ,ref 随着分辨率调整大小即可

AutoScale

--通过分辨率去修改大小
--参数分别为:最大分辨率,最小分辨率,最终大小,最小,最大 -- 最小最大为适应iphonex 这种
local aspect,toAspect,toScale,minScale,maxScale
void start() {
    Vector2 curSize = NGUITools.screenSize;
    float curAspect = curSize.y / curSize.x;
    float rate = (curAspect - toAspect) / (aspect - toAspect);
    float scale = rate * (1 - toScale) + toScale;
    scale = Mathf.Clamp(scale,minScale,maxScale);

    this.transform.localScale = new Vector3(scale, scale, scale);
}

未完待续

------ 本文结束 ------