[转] NGUI自适应

时间:2021-06-14 05:15:41

很多做移动终端开发的童鞋都可能遇到一个问题,就是如何自适应
其实NGUI已经能帮我们实现,下面就告诉大家怎么整这个自适应。
1,create a new ui
2,uiroot下添加uipanel(script)
3,camera的size设置为美术给你的图的size(比如美术给你的是960*640,size=960),
4,panel添加uistretch(script),其中的style设置为both,并将relative size的x和y都设为960(同上的道理,明白?)
5,再在panel下add一个sprite(最好是960*640)的背景图,其中transform的s一定注意要是1,不能再放大了。
以上就ok了
注明下:
uistretch的缩放NGUI提供了5种,

public enum Style
    {
        None,
        Horizontal,
        Vertical,
        Both,
        BasedOnHeight,
        BasedOnWidth,
    }
我自己加了一种BasedOnWidth,其实代码很简单,如下:

else if(style == Style.BasedOnWidth)
            {
                localScale.x = relativeSize.x * screenWidth;
                localScale.y = relativeSize.y * screenWidth;
                localScale.z = localScale.x;
            }
是不是很简单?
大功告成,希望对大家有帮助!

补充下,还有种方法比上面要好点。
camera的size设置为1
uistretch的relative的size设置为x=1/960f,y=1/960f
这样你的资源的就不用缩放了

自己实践补充

if (style == Style.BasedOnHeight)
            {

//****** NGUI默认处理方式 **********
                //localScale.x = relativeSize.x * rectHeight;
                //localScale.y = relativeSize.y * rectHeight;

//****** 自己稍做修改结果  发现适用范围更广泛**********
                localScale.x = relativeSize.x * rectHeight-relativeSize.x * rectHeight*0.25f;
                localScale.y = relativeSize.y * rectHeight-relativeSize.x * rectHeight*0.25f;
            }

转载地址:http://game.ceeger.com/forum/read.php?tid=5314