Unity3d + NGUI 的多分辨率适配

移动端的多机型适配

现在要介绍的是《锁链战记》这款游戏的适配方法,这种适配方法是UI是一个基础尺寸,背景是一个基础尺寸,背景比UI多出的部分是一些没有实际作用的部分,这样的适配方式避免了在iPhone5这样的小屏幕上镶边。

首先设定UIRoot的Scaling Style属性,如果是电脑现在FixedSize,如果要打包到移动端选择FixedSizeOnMobiles.

我这里是以960*640为UI基础尺寸所以这里填写640高。

下面编写脚本BaseAspect.cs

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(UICamera))]
public class BaseAspect : MonoBehaviour
{
    float standard_width = 960f;        //初始宽度
    float standard_height = 640f;       //初始高度
    float device_width = 0f;                //当前设备宽度
    float device_height = 0f;               //当前设备高度
    public float adjustor = 0f;         //屏幕矫正比例
    void Awake()
    {
        Base.GetInstance().BaseInit();
        //获取设备宽高
        device_width = Screen.width;
        device_height = Screen.height;
        //计算宽高比例
        float standard_aspect = Screen.width / standard_height;
        float device_aspect = device_width / device_height;
        //计算矫正比例
        if (device_aspect < standard_aspect)
        {
            adjustor = standard_aspect / device_aspect;
            //Debug.Log(standard_aspect);
        }
        Debug.Log("屏幕的比例" + Base.GetInstance().adjustor);
        if (Base.GetInstance().adjustor < 2 && Base.GetInstance().adjustor > 0)
        {
            camera.orthographicSize = Base.GetInstance().adjustor;
        }

    }
    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
}

将该脚本添加到UICamera同一节点上

这样就可以实现适配了,这种适配的方式会有镶边的存在。

蓝色的就是要镶嵌边框的地方。

Unity3d + NGUI 的多分辨率适配

时间: 2024-10-10 17:06:07

Unity3d + NGUI 的多分辨率适配的相关文章

【转】Unity3d + NGUI 的多分辨率适配

原文地址:http://www.cnblogs.com/cqgreen/p/3348154.html 一.当下移动设备的主流分辨率(数据来自“腾讯分析移动设备屏幕分辨率分析报告”) 1.1 iOS设备的分辨率主要有: 宽 高 宽高比 960 640 1.5 1136 640 1.775 1024 768 1.3333 2048 1536 1.3333 Android设备的分辨率则相对纷杂,主流的分辨率有: 宽 高 宽高比 800 480 1.6667 854 480 1.7792 1280 72

Unity NGUI的多分辨率适配

参考链接:http://blog.csdn.net/mfc11/article/details/17681429,作者:CSDN mfc11 1.NGUI默认的适配方式: NGUI默认是适配方式是根据高度适配,高度适配的具体设置可以参看连接:http://www.cnblogs.com/vitah/p/3942392.html. 2.使用默认适配方式可能出现的问题: 当目标设备的宽高比与所编辑页面的宽高比一致时,整个UI将完美显示:当目标设备宽高比小于所编辑的宽高比时,页面宽度将大于设备宽度,使

Unity3D NGUI自适应屏幕分辨率(2014/4/17更新)

原地址:http://blog.csdn.net/asd237241291/article/details/8126619 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 本文链接地址:Unity3D NGUI自适应屏幕分辨率 1.UIRoot:根据高度自适应屏幕分辨率. NGUI根目录的UIRoot组件自带了根据高度自适应分辨率的功能. Scaling Style属性可选择三种不同的缩放策略. PixelPerfect 完美像素:直接显示设定好的像素.当屏幕高度低于minimum

Android多分辨率适配经验总结

??Android多分辨率适配是一件很有意义但是比较麻烦的事情,网上有很多关于多分辨率适配的文章,多数文章讲解的都是整个APP的图片比较规则,可以将图片做成9图来完成多分辨率适配,但是对于一些游戏类应用(这里说的游戏没有使用游戏引擎).低龄儿童应用,APP中有很多花哨的图片,这种APP的图片显然无法做成9图,在网上查了很多资料始终没有比较理想的解决方案,结合自己最近做的项目介绍一下针对这种情况下的多分辨率适配: 为了减少UI的工作量,一个APP只提供一套图: 为了减少程序员的重复工作,一个APP

[Unity3d][NGUI]两种思路解决AssetBundle的依赖关系.

接上文. 使用上文中的AssetBundle打包方式生成的文件包括了依赖关系中的文件. 一般的使用中并不会发现什么问题. 可是当配合NGUI的时候,使用dynamicFont时打包AssetBundle会将每一个组件使用的dynamicFont都分开打包进去. 导出函数请參考:导出资源 导出资源包时出现的问题: 如图: 在解决依赖关系上我使用过2种方案: 第一种是使用BuildPipeline中的PushAssetDependencies和PopAssetDependencies方法来解决依赖关

【转】android多分辨率适配

前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路,由于android的布局文件存放在res的layout中,可以根据不同的手机分辨率指定特定的layou参数,如图所示:.根据不同的手机设定多个分辨率layout参数布局文件.因此再程序加载的过程中,会把运行该分辨率下的布局文件. 这样开发的问题是回到至布局文件很多,很乱.不方便管理.一旦修改需要修改

Android笔记:多分辨率适配及碎片化问题解决方案总结

一.适配多分辨率 1.官网介绍: http://developer.android.com/guide/practices/screens_support.html#qualifiers Screen characteristic Qualifier Description Size small Resources for small size screens. normal Resources for normal size screens. (This is the baseline siz

android多分辨率适配

前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路,由于android的布局文件存放在res的layout中,可以根据不同的手机分辨率指定特定的layou参数,如图所示:.根据不同的手机设定多个分辨率layout参数布局文件.因此再程序加载的过程中,会把运行该分辨率下的布局文件. 这样开发的问题是回到至布局文件很多,很乱.不方便管理.一旦修改需要修改

(16)Cocos2d-x 多分辨率适配完全解析

Overview 从Cocos2d-x 2.0.4开始,Cocos2d-x提出了自己的多分辨率支持方案,废弃了之前的retina相关设置接口,提出了design resolution概念. 3.0中有以下相关接口: Director::getInstance()->getOpenGLView()->setDesignResolutionSize() //设计分辨率大小及模式 Director::getInstance()->setContentScaleFactor() //内容缩放因子