【转】Unity3d + NGUI 的多分辨率适配
| 宽 | 高 | 宽高比 |
| 960 | 640 | 1.5 |
| 1136 | 640 | 1.775 |
| 1024 | 768 | 1.3333 |
| 2048 | 1536 | 1.3333 |
| 宽 | 高 | 宽高比 |
| 800 | 480 | 1.6667 |
| 854 | 480 | 1.7792 |
| 1280 | 720 | 1.7778 |
| 960 | 540 | 1.7778 |
| 1280 | 800 | 1.6 |
| 960 | 640 | 1.5 |
| 1184 | 720 | 1.6444 |
| 1920 | 1080 | 1.7778 |
using UnityEngine;
using System.Collections; /// <summary>
/// 根据设备的宽高比,调整camera.orthographicSize. 以保证UI在不同分辨率(宽高比)下的自适应
/// 须与UIAnchor配合使用
/// 将该脚本添加到UICamera同一节点上
/// </summary>
[RequireComponent(typeof (UICamera))]
public class UICameraAdjustor : MonoBehaviour
{
private float standard_width = 1024f;
private float standard_height = 600f;
private float device_width = 0f;
private float device_height = 0f; private void Awake()
{
device_width = Screen.width;
device_height = Screen.height; SetCameraSize();
} private void SetCameraSize()
{
float adjustor = 0f;
float standard_aspect = standard_width/standard_height;
float device_aspect = device_width/device_height; if (device_aspect < standard_aspect)
{
adjustor = standard_aspect/device_aspect;
camera.orthographicSize = adjustor;
}
}
}
using UnityEngine;
using System.Collections; /// <summary>
/// 根据设备的宽高比,调整UISprite scale, 以保证全屏的背景图在不同分辨率(宽高比)下的自适应
/// 将该脚本添加到UISprite同一节点上
/// 须与UICameraAdjustor脚本配合使用
/// </summary>
[RequireComponent(typeof (UISprite))]
public class UIBackgroundAdjustor : MonoBehaviour
{
private float standard_width = 1024f;
private float standard_height = 600f;
private float device_width = 0f;
private float device_height = 0f; private void Awake()
{
device_width = Screen.width;
device_height = Screen.height; SetBackgroundSize();
} private void SetBackgroundSize()
{
UISprite m_back_sprite = GetComponent<UISprite>(); if (m_back_sprite != null && UISprite.Type.Simple == m_back_sprite.type)
{
m_back_sprite.MakePixelPerfect();
float back_width = m_back_sprite.transform.localScale.x;
float back_height = m_back_sprite.transform.localScale.y; float standard_aspect = standard_width/standard_height;
float device_aspect = device_width/device_height;
float extend_aspect = 0f;
float scale = 0f; if (device_aspect > standard_aspect) //按宽度适配
{
scale = device_aspect/standard_aspect; extend_aspect = back_width/standard_width;
}
else //按高度适配
{
scale = standard_aspect/device_aspect; extend_aspect = back_height/standard_height;
} if (extend_aspect >= scale) //冗余尺寸足以适配,无须放大
{
}
else //冗余尺寸不足以适配,在此基础上放大
{
scale /= extend_aspect;
m_back_sprite.transform.localScale *= scale;
}
}
}
}
【转】Unity3d + NGUI 的多分辨率适配的更多相关文章
- Unity3d + NGUI 的多分辨率适配
一.当下移动设备的主流分辨率(数据来自“腾讯分析移动设备屏幕分辨率分析报告”) 1.1 iOS设备的分辨率主要有: 宽 高 宽高比 960 640 1.5 1136 640 1.775 1024 ...
- Unity3d + NGUI 的多分辨率适配(黑边)
原地址:http://www.2cto.com/kf/201310/250921.html 一.当下移动设备的主流分辨率(数据来自“腾讯分析移动设备屏幕分辨率分析报告”) 1.1 iOS设备的分辨率主 ...
- Unity NGUI的多分辨率适配
参考链接:http://blog.csdn.net/mfc11/article/details/17681429,作者:CSDN mfc11 1.NGUI默认的适配方式: NGUI默认是适配方式是根据 ...
- Unity3d + UGUI 的多分辨率适配
原文地址:http://blog.csdn.net/dingkun520wy/article/details/49471789 1.Canvas的属性配置 2.Canvas Scaler的属性配置 3 ...
- Unity3D NGUI自适应屏幕分辨率(2014/4/17更新)
原地址:http://blog.csdn.net/asd237241291/article/details/8126619 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 本文链接地址: ...
- Cocos与Cocos2d-x协作教程——多分辨率适配
http://www.cocoachina.com/bbs/read.php?tid-288123.html Cocos v2.1开始新增了一种新的多分辨率适配方案:流式布局. 这种布局相比Cocos ...
- Android多分辨率适配
前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路, ...
- Android多分辨率适配经验总结
Android多分辨率适配是一件很有意义但是比较麻烦的事情,网上有很多关于多分辨率适配的文章,多数文章讲解的都是整个APP的图片比较规则,可以将图片做成9图来完成多分辨率适配,但是对于一些游戏类应 ...
- Unity3D NGUI学习(一)血条
这次来讲讲Unity3D NGUI这个插件的学习,这个插件是收费的,不过去网上可以下载得很多可用版本.用来做用户的交互UI,学习起来比较简单 第一步,导入NGUI包 http://pan.baidu. ...
随机推荐
- 安装pear
下载go-pear.phar php go-pear.phar pear install Mail-1.2.0 pear list
- Java EE : 二、图解 Cookie(小甜饼)
目录 Java EE : 一.图解Http协议 Java EE : 二.图解 Cookie(小甜饼) Java EE : 三.图解Session(会话) 概述 一.概述 二.详细介绍Cookie 传输 ...
- CSS3新增的选择器和属性
<!doctype html>无标题文档 一.新增的选择器 CSS3新增的属性选择器 {除ie6外的大部分浏览器支持) 序号 选择器 含义 实例 1 E[att^="val&qu ...
- 深入理解iOS开发中的BitCode功能
前言 做iOS开发的朋友们都知道,目前最新的Xcode7,新建项目默认就打开了bitcode设置.而且大部分开发者都被这个突如其来的bitcode功能给坑过导致项目编译失败,而这些因为bitcode而 ...
- JAVA动手动脑
1.运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是 ...
- 一、Python 简介
There should be one -- and preferably only one -- obvious way to do it. 一种解释型,面向对象的.带有动态语义的高级程序设计语言. ...
- python学习05——字典
笨办法学python第39节 这节主要讲解的是字典,首先字典和列表的两个区别是: 1. 列表中可以通过数字找到列表中的元素,是数字作为索引的:字典中可以通过任何东西找到想要的元素,即字典可以将一个物件 ...
- powershell读写磁盘变量(对象序列化)
---[第一章,开篇引子]--- 很久很久以前,我在网上闲逛,看到一头powershell菜鸟,写了一篇感慨道“挖哈哈,我学会powershell啦,我以前很笨,各种不懂,还想把变量保存起来.” 实际 ...
- 研二下学期做的第一个项目(主要关于datagridview的一些笔记)
首先是行标题列rowheader dataGridView1.TopLeftHeaderCell.Value = "details"; ______________________ ...
- IE 文档模式
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv= ...