Unity3D NGUI自适应屏幕分辨率

转载 2013年12月04日 17:20:35

从别人那转载的,自己美实验过!!不晓得!!

不过下面有个链接,是我自己原创的,这个不行的话,我滴你可以瞅瞅!!

1.根据高度自适应屏幕分辨率。

NGUI根目录的UIRoot组件自带了根据高度自适应分辨率的功能。
Scaling Style属性可选择三种不同的缩放策略。
  1. PixelPerfect 完美像素:直接显示设定好的像素。当屏幕高度低于minimum Height时按比例缩小,当屏幕高度大于maximum Height时按比例扩大。
  2. FixedSize 按比例缩放:在设定好的基础上,直接按比例缩放。
  3. FixedSizeOnMobiles 合体版,android和ios为FixedSize方式,其它按照PixelPerfect方式。
这三种缩放方式全部都是按照高度计算缩放比例,完全忽略宽度。所以在制作时最好按照5:4(竖屏游戏按照4:5)的比例制作UI,这样在现有的机型均不会出现切边的现象。

2.根据宽度自适应屏幕分辨率。(UIRoot未实现)

UIRoot已经实现了根据高度自适应的功能,但是我现的需求是要根据宽度来自适应,屏幕高度高于UI高度则留空白。

起初我以为只要修改UIRoot的算法就能轻松搞定,完全搞不懂Update里面实在搞不明白为什么用 size = 2F/当前高度;
这种高端算法来运算,2F这个值更是糊里糊涂,为什么是2F不是3F,为什么不是1F?看的云里雾里。
直接把计算高度改成计算宽度,结果运算出来的比例要比理想比例大很多。显然是算法中运算宽度不应该是2F,但具体是几又不知道如何运算。但这只是bug1,经过运算这个值总会得出的。更严重的为出在bug2。
即便改变里UIRoot里面的算法,当改变高度改变,UI还在按比例自动缩放,而此时绑定UIRoot的scale并没改变。要想屏蔽高度自适应经过查看多方面资料,自能使用下面的方法3来实现根据宽度自适应屏幕分辨率了。

3.根据宽度自适应屏幕分辨率。(UIStretch)

这个是早期NGUI实现自适应分别率的一种方法,新版本中加入UIRoot自适应的方法后,这个脚本就不在被官方推荐使用了。

这个脚本自带的Style除了按高度自适应的功能之外,按宽度自适应是要拉伸图像的,并不能满足我们的要求。
最符合我们的要求的就是BasedOnHeight,那我们就按照这个功能修改一个BasedOnWidth出来,之前的博客中写过这个功能,现在这篇文章直接替换了之前的,所以我还是贴出修改的内容吧。
首先在Style枚举中增加一个BasedOnWidth,类型
  1. public enum Style  
  2. {  
  3.     None,  
  4.     Horizontal,  
  5.     Vertical,  
  6.     Both,  
  7.     BasedOnHeight,  
  8.         BasedOnWidth,  
  9.     FillKeepingRatio,   
  10.     FitInternalKeepingRatio  
  11. }  
Update方法中增加一个if分支。
  1. if (style == Style.BasedOnHeight)  
  2. {  
  3.     localScale.x = relativeSize.x * rectHeight;  
  4.     localScale.y = relativeSize.y * rectHeight;  
  5. }else if (style == Style.BasedOnWidth)  
  6. {  
  7.         localScale.x = relativeSize.x * rectWidth;  
  8.         localScale.y = relativeSize.y * rectWidth;   
  9. }  
  10. else if (style == Style.FillKeepingRatio)  
  11. {……}  
这个脚本是通过拉伸scale实现,所以这个脚本要放在你需要拉伸的UI上(如果你只需要一个背景图片自适应屏幕分辨率,那就把这个脚本添加到这个背景图片中,如果要一个panel内所有元素都自适应,那就放在这个panel上。如果想让所有的UI全部自适应分辨率,那就放在NGUI的cameta上。)
ui Camera属性需要选择渲染当前UI的摄像机。
使用步骤:
1.把Game视图设定一个最理想的宽度(以后按照这个比例缩放。)。
2.按需求选择一个放置UIStretch的物体,然后添加这个组件。并将ui cameta赋值。
3.将ui cameta的Size修改为当前屏幕的宽度。(这个物体的Scale的X、Y已经被UIStrech设置为屏幕宽度,此值不能被修改。)
4.这个时候改变窗口宽度,只有该物体Scale 的X、Y已被自动修改,UI视图已自动适应~!

我自己的原创在这里http://blog.csdn.net/luckydogyxx/article/details/17375929
好了,看到这,辛苦你了,大家帮帮忙,注册下号,有大用的(点击我的链接进入注册即可):

你想淘宝省钱么?你是淘宝达人么?现在有个好机会就可以在购物的同时,即可省下一大笔钱。。赶紧来看看吧。。


点我进入畅返网(淘宝购物返现网)

MadeByLuckyDog


相关文章推荐

Unity3d + NGUI 的多分辨率适配

移动端的多机型适配 现在要介绍的是《锁链战绩》这款游戏的适配方法,这种适配方法是UI是一个基础尺寸,背景是一个基础尺寸,背景比UI多出的部分是一些没有实际作用的部分,这样的适配方式避免了在iPhone...

unity 使用Ngui 屏幕适配问题

原文地址:http://blog.csdn.net/onerain88/article/details/11713299/ 一、当下移动设备的主流分辨率(数据来自“腾讯分析移动设备屏幕分辨率...

Unity NGUI屏幕适配

屏幕适配是每个手机应用和游戏都会解决的问题,当然在开发的过程中会遇到各种各样的坑,这次,我们就来讨论一下unity项目中的屏幕适配吧! #目录 1. 屏幕适配的分类 2. 哪些内容需要适配 3. u...
  • k46023
  • k46023
  • 2016年10月17日 11:12
  • 1628

unity3d ngui 适配性价比最高的方案

对于网上各种适配方法,说明的有很多,但我认为大部分都是自己写一个demo啥的能行然后就说这种方案可以。但实际上这些方法到底怎么样,恐怕并不尽如人意。       ngui的UIRoot自带缩放功能,...
  • yxriyin
  • yxriyin
  • 2015年07月08日 10:47
  • 1553

NGUI3.6适配的一种方法

适配问题: 开始时想固定大小,做微端和网页,后来运营商要求要做适配使用的是ngui3.6,ui原有的适配也只是绑了上下左右的锚点更该ngui的设置,只能完成按高等比缩放(坑啊,页游怎么够用啊,宽就没...

【NGUI】屏幕自适应(不用UIStretch,用UIRoot)

这篇文章是转载的,之前用UIStretch做屏幕自适应,但一直有两个硬伤让我难受,一是屏幕被随意拉伸后,里面的UI就不是我想要的比例了,明明一个圆形变成椭圆了,一个高挑的美女变成一个肥姐了,好吧,这如...

NGUI中的Anchor与屏幕自适应

450*450 800*600

【Unity3D插件】NGUI屏幕自适应

屏幕自适应 NGUI可以比较方便的实现屏幕自适应,但是它的官方教程里面针对这个问题没有详细的教程,所以可能在实现的时候会走比较多的弯路。以下是我在开发过程中找到的一个比较方便的实现方法。 ...

DllImport System.DllNotFoundException 问题分析与解决

自己实验了一下,感觉以下几种解决办法是可行的: 方法一: 在类似C:\Program Files\Microsoft Visual Studio 8\VC\redi st\Debug_NonRe...

Unity3D引用dll打包发布的问题及解决

http://blog.csdn.net/zhuweisky/article/details/9135803 今年我们开始使用Unity3D开发MMORPG,脚本语言使用C#,这样我们就可以使用以...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity3D NGUI自适应屏幕分辨率
举报原因:
原因补充:

(最多只允许输入30个字)