自适应分辨率

3.xx 以上 绑定到UIRoot

using UnityEngine;

namespace Com.Xyz.UI
{
    [ExecuteInEditMode]
    [RequireComponent(typeof(UIRoot))]
    public class UIScreenAdaptive : MonoBehaviour
    {
        public int aspectRatioWidth = 1280;
        public int aspectRatioHeight = 720;
        public bool runOnlyOnce = false;
        private UIRoot mRoot;
        private bool mStarted = false;

        private void Awake()
        {
            UICamera.onScreenResize += OnScreenResize;
        }

        private void OnDestroy()
        {
            UICamera.onScreenResize -= OnScreenResize;
        }

        private void Start()
        {
            mRoot = NGUITools.FindInParents<UIRoot>(this.gameObject);

            mRoot.scalingStyle = UIRoot.Scaling.FixedSize;

            this.Update();
            mStarted = true;
        }

        private void OnScreenResize()
        {
            if (mStarted && runOnlyOnce)
            {
                this.Update();
            }
        }

        private 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;
            }
        }
    }
}

自适应分辨率

时间: 2024-08-08 09:30:48

自适应分辨率的相关文章

WinForm窗体自适应分辨率

我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观.实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可.因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标. 在这里我们只考虑相对于自己窗体的窗口坐标更简单,也就是成比例变化.为了多个窗体共用,我在这里创建一个类AutoSizeFormClass ,1.使用它去记录窗体和其控件的初始位置和大小,2.判断窗体中的控件是否为容器控件,如果

圣杯布局(目的就是为了实现自适应分辨率)和等高布局(目的就是实现左右两边的高度等高,并且高度有内容撑开)

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>圣杯布局</title> <style> body{margin:0;} .center{height:600px;background:#f60;margin:0 200px

delphi 程序窗体及控件自适应分辨率(通过ComponentCount遍历改变字体大小以及上下左右)

unit untFixForm; interface uses Classes, SysUtils, Controls, Forms; type TFontedControl = class(TControl) public property Font; end; TFontMapping = record SWidth:Integer; SHeight:Integer; FName:string; FSize:Integer; end; procedure FixForm(AForm:TFor

背景图片自适应分辨率浏览器大小自动拉伸全屏代码

<div id="web_bg" style="position:absolute; width:100%; height:100%; z-index:-1"> <img style="position:fixed;" src="http://a.lanyes.org/bg1.jpg" height="100%" width="100%" /> </div&

NGUI之UIRoot——屏幕的自适应分辨率的计算

//原来写在其他博客上的东西,搬迁 预备知识: 要明确的三个概念: 设计分辨率:在编辑器上开发UI使用的分辨率.我们所有的UI都是在这个分辨率下设计制作的. 显示区域分辨率:设备上所显示的UI区域在编辑器中的分辨率. 屏幕分辨率:设备实际的分辨率. 已知设计分辨率,屏幕分辨率,求区域分辨率的计算方法 设置变量 设计分辨率 ContentWidth * ContentHeight,以下简写为 CW * CH 屏幕分辨率 width * height,以下简写 W * H 区域分辨率 TargetW

WPF窗体自适应分辨率

使用WPF创建一个窗体(Window)时,如果设置了固定的高度(Height)和宽度(Width),一旦用户的电脑分辨率过低,就会使得窗体及其中的内容无法完整地显示出来.要解决这个这个问题,有以下几个方法可供参考: 1.无论将窗体做成全屏的(WindowState="Maximized"),还是设置了固定的窗体大小,都可以利用DockPanel控件来进行布局.DockPanel控件有一个特殊的属性:LastChildFill="True",可以使该控件中的最后一个元

Qt之窗体拖拽、自适应分辨率、自适应大小 good

Qt之自定义界面(实现无边框.可移动) Qt之自定义界面(窗体缩放-跨平台终极版) Qt之自定义界面(窗体缩放) http://blog.csdn.net/liang19890820/article/details/51833870

html5开发App,如何自适应分辨率

在head部分加入代码 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" /> 来自为知笔记(Wiz)

新建ios项目,运行时一闪即逝,并未显示出画的界面,以及分辨率自适应问题

最近才开始自学ios,之前找的资料相对老旧,看到资料里面画界面是在.xlb文件里画的,而我画出来运行出来却是下面这样的,这和说好的不一样啊.于是我百度了下才知道Xcode6.1版本的正常界面显示的都应该写在Main.storyboard里,而我把界面写在了LaunchScreen.xlb里面,所以画的界面只是一闪而过. 重新画界面后,没有做任何设置,这个时候画出来的界面分辨率和模拟器不太一样,界面有点跑偏,看到百度上说去掉下图中的两个√,于是去掉后,用的iPhone6的模拟器还是有点偏,换成iP