NGUI 屏幕自适应

由于恶心的移动终端市场没有规范,各种比例大小的屏幕满天飞,导致在设计手机界面的时候很头疼。这里需要解决两个问题,一个是防止被裁剪,一个是防止留黑边。

关于UIRoot组件的scaling style属性,另外一篇文章有说http://lengbingteng.iteye.com/admin/blogs/2094091/edit

 

要解决问题,先要分析问题。假设摄像机代表画布的大小,它跟屏幕之间存在几个问题。长度不一样,宽度不一样,长宽比例不一样。首先,NGUI的底线是无论放大还是缩小,长宽比例必须保持不变,不然就意味这变形。而它初步的解决方式有两种:

FixedSize画布大小不变,这种方式就是无论屏幕的大小如何,我画布的大小始终不变,简单来说就是不作为,我觉得是最懒最挫的一种解决方式。

pixelperfect:画布会跟着屏幕的大小改变,但是只跟着高度变,其实也只能跟着一个因素变,如果跟着两个因素变就会变形。这种方式就只需要面对一个问题,就是长宽比例不同的问题。这里需要额外说到一个属性,Adjust by DPI:这个属性表示在采用pixelperfect策略的时候,不会改变屏幕的大小。

 

这里说一下自己采用的解决方式:选择pixelperfect和Adjust by DPI,然后使用锚点把控件绑定到屏幕的中心和边缘相对位置,背景使用场景,独立于UI。

 

杂记一:

由于我想以红米的屏幕为标准制作UI界面,那么我确定的分辨率是720X1280,游戏是竖屏的。那么我就需要找个地方把分辨率固定下来,很多人跟我说在UIPanel上设置。但事实上这玩意跟UIPanel一点关系都没有,屏幕的分辨率其实就是相机的分辨率,而NGUI相机的分辨率是由UIRoot控制的。好吧,这里我给自己挖了个坑,为了做屏幕自适应我把style设置为pixelperfect,它这边的意思是相机最终的分辨率由手机决定,但是我是在电脑上面开发,根本就不确定手机分辨率。于是NGUI用的是电脑屏幕上当前game视图上显示的分辨率,但是显示的分辨率又不是720X1280,这样导致我的相机的分辨率不是720X1280。

有两种解决办法,一种就是买块显示屏分屏开发,这样game视图显示的大小就能想办法弄成720X1280,另一种方式就是在开发的时候,把style设置为FixedSize,并把高度设置为1280,然后编辑里面的相机分辨率就自动为720X1280。

我也想再搞一块显示屏,可咱是穷人啊,唉,只能当做一种奢求了。

 

杂记二:

api compatibility level:是否选择只使用.net2.0的子集,U3D跟.net产生依赖一直是被诟病的话题,所以它提供了一个方案,就是只把需要的打到包里面去。这本身并没有什么问题,问题就在于我们不清楚应该去掉什么和不去掉什么。然后当我们在项目里依赖了第三方库,而且是System库的时候,打包APK的时候什么错误都不提示,但是就是不输出结果。这就意味着你得一点点的试,然后猜那里出了问题,好在哥感觉到这里有蹊跷,索性没浪费太多时间。

其实,把整个.net打进项目里也就大概10M,去掉一部分也就省个2到3M的样子何必呢,是吧!

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值