Unity的多分辨率解决方法

本文介绍了在Unity+NGUI环境下,如何实现根据屏幕宽度而非高度进行缩放。通过停用UIRoot,自定义UICamera的代码实现屏幕适配。此外,还分享了对UIRoot组件的修改方法,以适应不同宽度的屏幕,特别是在移动设备上推荐使用PixelPerfectWidth模式。同时,文中提到了在使用这些方法后可能出现的问题及解决方案。
摘要由CSDN通过智能技术生成

我们开发的环境是unity+Ngui,正常情况,ngui的 UIRoot和UICamera组件有自动屏幕分辨率调节,但是UIroot的策略是根据屏幕的高度来计算的,而我们希望的是宽度来缩放。

我们采取的方法是:

1,停用Uiroot,不用该组件,并且把根节点的缩放还原为1.

2,修改UIcamera的代码 如下:在Awake调用一下changeResolution方法就行了。

3,该脚本的优势主要是根据IOS现有设备的分辨率计算的。我们用了好几个项目,目前感觉还是很不错的。

    void changeResolution()/// 
    {
        int sw = Mathf.Min(Screen.width, Screen.height);
        int sh = Mathf.Max(Screen.width, Screen.height);

if (sw == 0 || sh == 0) { return; }//这儿加这句话的原因是初始化打开unity的时候  sw 和sh的值为0  可能是预编译 然后计算下去 会发现分母为0  然后 报错,但是运行的时候不会
        if (sw < 640)
        {
            cameraWidth = 640;
        }
        else if (sw > 768)
        {
            cameraWidth = 768;
        }
        else
        {
            cameraWidth = sw;
        }
        cameraHeight = cameraWidth * sh / sw;
        camera.orthographicSize = cameraHeight / 2;
        //
        if (cameraHeight > 1138)
        {
            cameraHeight = 1138;
            cameraWidth = sw * cameraHeight / sh;
            camera.orthographicSize = cameraHeight / 2;
            //
        }
        Deb

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值