unity及NGUI的一些细节

最近摸索NGUI.记录一些使用中摸索出的做法.也不知道是否还有更好的做法..欢迎指正...

 

1.NGUI的分辨率自适应问题

  NGUI的自适应做的很棒.如果只是想在手机上适配各种分辨率.只需要将UIRoot的Scaling Style改为FixedSize即可.之后你所有在此Root下的界面都会按比例缩放.

  当然,有时候有些界面是不希望被缩放的.而且随意的缩放可能导致贴图的效果不好.这种情况下就要将UIRoot的Scaling Style改为PixelPerfect.但此时所有此Root下的界面都保持原来的像素.  (其实Root就是根据Scaling类型去算一个LocalScale.FixSize的时候就缩放大小为2/ManualHeight.PixelPerfect的时候缩放大小为2/当前屏幕的Height.)

  那在PixelPerfect中界面又如何做分辨率适配呢?探索下来可以用两个UIStretch来做保持比例的适配.比如说我想做一个界面.是保持16:9的比例来缩放.那首先界面放一个UIWdige的节点Anchor1.加上UIStretch. Style设置为FitInternalKeepingRatio.InitialSize设置为16:9.在Anchor1下再加入一个空节点Anchor2.这一点很重要.在看了UIStretch的代码才发现.这个脚本对于UIPanel.UIWdiget都是直接设置Dimensions的.而如果没有这两个组件.就会去设置LocalScaler.加入UIStretch.Style设置为Both.然后设置RelativeSize.这个值跟你的界面设计大小有关.公式是这样的.LocalScale = RelativeSize * ScreenSize.也就是说这里的ReletiveSize控制的是节点的Scale.比如说我们标准分辨率定为1920*1080.美术在做界面的时候如果按照一半也就是960*540来做.那公式就是 2=ReletiveSize.x*1920.得到ReletiveSize.x=0.0010416.

所以我们的做法原理是用一个Widget来保持界面与屏幕的比例.然后再用一个UIStretch来保持子节点与此Widget的缩放比例.

 

Anchor1

 

Anchor2

 

给美术做界面的时候为了有个参考.弄个参考的Widget.Demensions设为960*540 如下图.红色的框是可视区.会根据Game窗口大小变的.

 

 

2.使用Animation时的问题

在使用Unity的Animation时 发现不能操作那些需要在Set时候做一些事情的Property上.实验下来.不会调用Set操作..在文档中并未找到相关论述.可能是BUG?Unity的版本是4.3.4f1.

所以在使用Animation操作Sprite的FillAmount的时候.会没有效果.如果一定要这么做的话.需要加个脚本.在Update的时候判断是否有改变.再设置.

另外.不要将Animation和Panle放在同一个GameObject上.Panel的Dirty机制可能导致动画播放有问题.

 

 3.在使用NGUI的PlayAnimation时.会将原来的Animation的Active设置成false.结果是原来Animation中的Animation Event失效.

 

 4.打包进assetbundle的文件不能重名.比如一个Prefab文件名为GameUI.prefab.如果再有一个文件名为GameUI.cs的脚本.打包进assetbundle后.想要获取GameUI.可能得到的是脚本文件.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值