【转】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. ...
随机推荐
- Jfreechart初案例--饼图
1.action @Controller(value = "pieAction") @Scope("prototype") public class PieAc ...
- 查找增强出口和BADI程序
*&---------------------------------------------------------------------* *& Report Z_FIND_EX ...
- Rigid motion segmentation
In computer vision, rigid motion segmentation is the process of separating regions, features, or tra ...
- Thymeleaf3.0内容
Thymeleaf简介 什么是Thymeleaf Thymeleaf是网站或者独立应用程序的新式的服务端java模板引擎,可以执行HTML,XML,JavaScript,CSS甚至纯文本模板. Thy ...
- [CentOS Server] Bug when calling matlab in bash
尝试了好几遍,仍然不能用简写命令调用matlab,这里把过程记录如下. (1). 登录 server [She@She ~]$ ssh shecl@xx.xx.xx.xx Last :: from x ...
- 学习winform第三方界面weiFenLuo.winFormsUI.Docking.dll
控件dockpanel中提供了几个可用的类, 重要的有两个, 一是DockPanel, 一是DockContent, DockPanel是从panel继承出来的, 用于提供可浮动的dock的子窗口进行 ...
- Topcoder SRM570 900 CurvyonRails
题意:给定一个网格,一些格子是障碍不用管,剩余的格子是城市,你可以修建铁路,铁路的形状可以是直的或者弯的,也就是说可以以这个点为节点连接它四联通的其中两个方块.要求用一个或多个环来覆盖所有城市.对于有 ...
- Matrix(单点移动,多点缩放)
package cn.iris.matrixapi; import android.app.Activity; import android.graphics.Matrix; import andro ...
- Fibonacci(斐波那契)递归实现。容易看懂
#include<iostream>using namespace std;int fibonacci(int n){if(n<=0) return 0; else if(n==1) ...
- Three.Js学习第一天
因为工作需求,最近接触到了ThreeJs库,国内学习文档的确少,所以在这里写下bolgs记录学习史,并且给后面学习的人尽一份微博之力. 3D场景依靠WebGL技术.目前支持比较好的浏览器,谷歌.火狐. ...