博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NGUI屏幕自适应(转)
阅读量:5279 次
发布时间:2019-06-14

本文共 1302 字,大约阅读时间需要 4 分钟。

屏幕自适应

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

主要组件

1. UIAnchor

这个是用来确定控件在屏幕中的位置,另外有一篇教程专门讲它的功能,所有不会再赘述

2. UIStretch

这个是用来做缩放的组件。老版本的NGUI是集成在UIAnchor上的。新版本的UIStretch提供了4种缩放方式:

Horizontal:只缩放水平方向

Vertical:只缩放垂直方向

Bose:缩放两个方向

:基于高度等比缩放

然后基于这些我自己实现了一个

:基于宽度等比缩放

代码如下:

 

[csharp] 
  1. else if(style == Style.BasedOnWidth)  
  2. {  
  3.     localScale.x = relativeSize.x * screenWidth;  
  4.     localScale.y = relativeSize.y * screenWidth;  
  5.     localScale.z = localScale.x;  
  6. }  

 

这段代码添加在Update方法里面。为了能将UIStretch挂在UIPanel上面不出问题,所有将Z轴也缩放了。

自适应流程

1. 创建一个新的UI,将Anchor里面的UIAnchor调整的合适的位置,注意最好将Anchor设置为Bottom。

2. 将调节到默认屏幕大小。比如UI是以960*640分辨率制作的,那么将调整到960。

3. 在Panel上面添加一个UIStretch,模式选择。完成之后你可以看到你的被修改到了当前屏幕的X方向分辨率大小。

4. 将UI控件添加到Panel上,调整位置,在Panel下的所有控件都会以X方向为标准做等比缩放来适应屏幕大小。

5. 添加一张作为背景的图,将UISprite的anchor设置为Bottom,添加之后你可以看到这个sprite可以在不同的分辨率下自适应了。

6. 以上一步添加的背景图作为参照物来摆放页面上的控件,这样不仅仅是大小,位置也同样会按照相同的模式进行等比缩放

7. 可以在第3步创建的Panel下面添加子Panel,子Panel不需要UIStretch(一般用来做Draggable Panel,否则没必要,会增加额外的Draw Call)

8. 如果某一些控件需要定位在屏幕上下左右中的某一角,可以单独给他添加一个UIAnchor,这个时候UIStretch只会缩放这个控件的大小,它的位置由他自己的UIAnchor控制了

 在u3d编辑器中能开导缩放效果

但发布到网页就没效果了

检查一下你的UIStretch上面依赖的camera是不是你修改了size那个

正常情况下,你的UIPanel挂上UIStretch之后的scale大概在1000左右,比较大,你可以看看你的UIPanel的位置和大小与camera的相对位置

转载于:https://www.cnblogs.com/RenderLife/archive/2013/01/14/2859899.html

你可能感兴趣的文章
TableView头视图高度问题
查看>>
PHP——大话PHP设计模式——命名空间和类的自动载入
查看>>
06_Python的数据类型3元组,集合和字典_Python编程之路
查看>>
【BZOJ2120】—数颜色(带修莫队)
查看>>
JavaScript 扩展方法 trim 去除指定字符串
查看>>
if函数判断日期在某个时间段
查看>>
Windows10关闭自动更新
查看>>
半平面交模板
查看>>
mysql入门
查看>>
[USACO08NOV]奶牛混合起来Mixed Up Cows
查看>>
LOJ 2483: 洛谷 P4655: 「CEOI2017」Building Bridges
查看>>
常用博客Metaweblog Api地址
查看>>
5-9
查看>>
Oracle 联机重做日志文件(ONLINE LOG FILE)
查看>>
Say“No”,你学会了吗?
查看>>
ios多线程-GCD基本用法
查看>>
C#委托的异步调用
查看>>
React Native & react-native-web-player & React Native for Web
查看>>
node.js & fs & file read & file write
查看>>
ES6扩展运算符(三点运算符)...的用法
查看>>