NGUI屏幕适应

  NGUI屏幕适应
根据NGUI所给出的例子就可以做到:
首先每个部都由一个Anchor来控制,比如我所做的项目,就需要把上下两个控制面板对齐上下,然后中间的UI就居中显示,就可以达到目的了。
所以我的做法是: 分三个Anchor控制。
分别上中下对齐:
注意,把Camera绑定后,再针对当面的屏幕把上中下三个UI对齐,运行就会自动 对齐的了。
当然 ,除了 这个之外,还需要借用一个 SZUIRoot脚本控制屏幕自适应 。
把UIRoot的Scaling Style设置为:FixeSize    ,它的Manual Hight为开发时的屏幕高度。
然后 为当前开发屏幕大小。
SZUIRootScale 代码示例如下:
using UnityEngine;
[ExecuteInEditMode]
[RequireComponent(typeof(UIRoot))]
public class SZUIRootScale : MonoBehaviour
{
    public int aspectRatioHeight;
    public int aspectRatioWidth;
    public bool runOnlyOnce = false;
    private UIRoot mRoot;
    private bool mStarted = false;
    void Awake()
    {
        UICamera.onScreenResize += ScreenSizeChanged;
    }
    void OnDestroy()
    {
        UICamera.onScreenResize -= ScreenSizeChanged;
    }
    void Start()
    {
        mRoot = NGUITools.FindInParents<UIRoot>(this.gameObject);
        mRoot.scalingStyle = UIRoot.Scaling.FixedSize;
        this.Update();
        mStarted = true;
    }
    void ScreenSizeChanged()
    {
        if (mStarted && runOnlyOnce)
        {
            this.Update();
        }
    }
    void Update()
    {
        float defaultAspectRatio = aspectRatioWidth * 1f / aspectRatioHeight;
        float currentAspectRatio = Screen.width * 1f / Screen.height;
        if (defaultAspectRatio > currentAspectRatio)
        {
            int horizontalManualHeight = Mathf.FloorToInt(aspectRatioWidth / currentAspectRatio);
            mRoot.manualHeight = horizontalManualHeight;
        }
        else
        {
            mRoot.manualHeight = aspectRatioHeight;
        }
        if (runOnlyOnce && Application.isPlaying)
        {
            this.enabled = false;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bricke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值