【NGUI】屏幕自适应(不用UIStretch,用UIRoot)---------------good
原地址:http://blog.csdn.net/lzhq1982/article/details/18814023
这篇文章是转载的,之前用UIStretch做屏幕自适应,但一直有两个硬伤让我难受,一是屏幕被随意拉伸后,里面的UI就不是我想要的比例了,明明一个圆形变成椭圆了,一个高挑的美女变成一个肥姐了,好吧,这如果还能忍,那第二条真是让我尝尽了各种方法,那就是panel的裁剪用不了了,想做Scroll View做不了了,然后百度才知道要Panel做裁剪必须要求其scale和其父一直到根节点的scale都是(1,1,1),这还咋拉伸啊,然后看到很多朋友的各种代码尝试,结果一一失败了,反正是不好使,所以用UIStretch做屏幕自适应真是蛋疼啊,下了个新的NGUI版本3.0.8,UIStretch已经不能用了,看来连官方都不太支持了,好在还有其他办法,看了一位朋友的博客,写的非常清楚了,我这里做一下转发,真是帮我解决了所有问题:
看过一些文章,大多数都用UIStretch。说实话我并不喜欢用这个脚本。
我一直对那些在屏幕适应上出现问题的人推荐使用UIRoot的ManualHeight。
先提供三个截图。看看效果是否是你想要的。旁边空白出来的地方,你需要和策划、美术商量用一些背景挡住。
1、正常开发分辨率下:
2、看起来较细的分辨率:
3、看起来较宽的分辨率:
使用注意:
1、和策划制定好开发时分辨率。这很重要,要保证所有UI都在同样的分辨率下制作。
2、把我这个脚本挂在UIRoot上。UIRoot的Scaling Style修改为FixedSize。
3、aspectRatioHeight、aspectRatioWidth分别为开发时的高和宽。
4、每个UIRoot都需要调整ManualHeight到和策划制定的高度。
5、Unity3D的Game窗口,调整到相应的分辨率。
(感谢成都-大强提供以下版本。注意:UICamera.onScreenResize是3.0+版本的,如果报错请删除即可)
- using UnityEngine;
- [ExecuteInEditMode]
- [RequireComponent(typeof(UIRoot))]
- public class SZUIRootScale : MonoBehaviour
- {
- public int aspectRatioHeight;
- public int aspectRatioWidth;
- public bool runOnlyOnce = false;
- private UIRoot mRoot;
- private bool mStarted = false;
- void Awake()
- {
- UICamera.onScreenResize += ScreenSizeChanged;
- }
- void OnDestroy()
- {
- UICamera.onScreenResize -= ScreenSizeChanged;
- }
- void Start()
- {
- mRoot = NGUITools.FindInParents<UIRoot>(this.gameObject);
- mRoot.scalingStyle = UIRoot.Scaling.FixedSize;
- this.Update();
- mStarted = true;
- }
- void ScreenSizeChanged()
- {
- if (mStarted && runOnlyOnce) {
- this.Update();
- }
- }
- 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;
- }
- }
- }
【NGUI】屏幕自适应(不用UIStretch,用UIRoot)---------------good的更多相关文章
- 【Unity3D插件】NGUI屏幕自适应(转)
屏幕自适应 NGUI可以比较方便的实现屏幕自适应,但是它的官方教程里面针对这个问题没有详细的教程,所以可能在实现的时候会走比较多的弯路.以下是我在开发过程中找到的一个比较方便的实现方法. 主要组件 1 ...
- NGUI屏幕自适应
NGUI确实是非常棒的一个做界面的插件,比起U3D自带的GUI要好很多,当然也有一些不好之处,毕竟什么都不可能那么完美. 最近在用Unity写游戏使用NGUI遇到了一个很多人都在遇到的问题,就是关于屏 ...
- NGUI 屏幕自适应
雨松MOMO 2014年05月04日 于 雨松MOMO程序研究院 发表 现在用unity做项目 90%都是用NGUI,并且我个人觉得NGUI应该算是比较成熟的UI插件,虽然他也存在很多问题,但是至少 ...
- NGUI屏幕自适应(转)
屏幕自适应 NGUI可以比较方便的实现屏幕自适应,但是它的官方教程里面针对这个问题没有详细的教程,所以可能在实现的时候会走比较多的弯路.以下是我在开发过程中找到的一个比较方便的实现方法. 主要组件 ...
- NGUI 屏幕自适应大屏与小屏(初始设定宽高为1280x720,能适应比其小或者更大的屏)
具体细节可以参考另外一篇随笔! 以下提供的算法完成的事: 1.自适应1280x720分辨率以下的屏幕 2.自适应1280x720分辨率以上的屏幕 在我设定的要求内包括的分辨率大部分都测过了,背景图.全 ...
- NGUI屏幕自适应解决方案
NGUI研究院之自适应屏幕 http://www.xuanyusong.com/archives/2536 Unity3D研究院之使用Android的硬件缩放技术优化执行效率 http://www.x ...
- NGUI 屏幕自适应(初始设定宽高800x480只支持比其大的屏幕)
自适应讲解部分可以参考以下网址:http://www.xuanyusong.com/archives/2536,下面代码中提到的AdaptiveManualHeight()函数就是参考该文章的. 下面 ...
- [Unity3D]NGUI用Sprite动画和屏幕自适应做游戏开始场景
我们在玩任何一款手游产品时,都是先上来个logo界面,游戏欢迎界面等,这就意味着我们要做一款游戏需要多个场景,场景之间来回切换实现游戏逻辑,unity也不例外,所以从本篇开始将会介绍如何搭建多个场景, ...
- NGUI之自适应屏幕
转载: 雨松MOMO 2014年05月04日 于 雨松MOMO程序研究院 发表 ,原文链接 现在用unity做项目 90%都是用NGUI,并且我个人觉得NGUI应该算是比较成熟的UI插件,虽然他 ...
随机推荐
- jQuery之点击弹出图标环形菜单
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库
http://www.iteye.com/topic/1113732 原则网址 Java源码初接触 如果你进行过一年左右的开发,喜欢用eclipse的debug功能.好了,你现在就有阅读源码的技术基础 ...
- JavaScript学习笔记(12)——JavaScript自定义对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- (转)关于redis、memcache、mongoDB 的对比
从以下几个维度,对redis.memcache.mongoDB 做了对比,欢迎拍砖 1.性能 都比较高,性能对我们来说应该都不是瓶颈 总体来讲,TPS方面redis和memcache差不多,要大于mo ...
- 手机APP与原生APP设计的区别
交互上可以按照原生App的设计方式,效果将越来越接近,主要区别在于: 1.设计中要考虑到浏览器地址栏和工具栏的占有空间,和其对App的操作存在一定的影响. 2.暂时不适合调用系统底层接口,更适合web ...
- 添加线标注ILineElement
private void AddLineElement(IPolyline polyline) { try { IPolyline pPolyline = polyline; IRgbColor pL ...
- poj 2220 Sumsets
Sum ...
- This bison version is not supported for regeneration of the Zend/PHP parsers
在 mac 中编译 php-src.git 报错: configure: WARNING: This bison version is not supported , excluded: ). con ...
- DTCMS会员中心快速更改样式思路
非常简便 制作一个public.css文件,包含网站头部和底部的样式代码 每个会员中心模版导入这个文件就可以 把原先style.css的头部和底部样式代码删除
- PHPStorm 2016.2 - 2016.3许可证服务器
最快,最安全的选择,以激活您的PHPStorm 2016.2 - 2016.3,这是足够的激活服务器,软件将自动激活.该过程将不断更新,如果不工作评价写入,如果有,以激活没有列出的服务器也可以说. 通 ...