iphonex适配游戏_Cocos Creator 适配怎么做?

06971f8fc1e55dad85c13fb09b201510.png

背景和原理

因为手机设备的尺寸不一,分辨率也不一样,这给游戏开发适配带来了一点工作量。为了保证多端基本一致的视觉体验,在开发游戏的时候需要做游戏的适配。


在游戏开发前,需要了解的一个概念是游戏的“设计尺寸”。这个是设计同学在输出设计稿的唯一参考,通常以最常见的设备尺寸作为设计基准。如iPhone 6:750 x 1334。

82095d5ee6026b7cd3dff434c2badc05.png
图片来自cocos creator官网


如果最终的设计稿尺寸是750 * 1334,那么在比这个更小的手机上怎么显示呢?比如iPhone 5:640 *1136,你不可能只显示的一部分。引擎底层的通常做法是将canvas画布设置一个scale缩放。


问题是scale的值怎么设定?在2D游戏中,分别可以做X和Y方向设置缩放值。如果X和Y的缩放值是一样的,就是等比缩放。如果不一样那就是不等比缩放,那么画布会产生压缩或拉伸效果。iPhone 6的宽高比:750/1334 = 0.5622,iPhone 5的宽高比:0.5633。基本接近,但不完全一样,再比如iPhone X:0.4618,差别更大。


一般情况下可能不太接受游戏画布拉伸或者压缩,因此只能适配一个,要么适配宽度,要么适配高度。其结果就是裁剪了一部分,或者出现黑边。实际做法是屏幕尺寸依旧是canvas的大小,开发者绘制的精灵全部在一个容器里面,只要对容器设置一个scale值。如果scale放大了,超出屏幕外的自然就会被裁剪掉,scale变小了就会出现黑边。

cocos 示例

8fd38eec2efccb84e82232e949baf851.png


在cocos编辑器中,选择图层中canvas就能看到设计尺寸的填写地方,另外可以选择适配高度还是宽度。如图,游戏的设计尺寸:750 * 1220。如果设备的尺寸刚好是这样,那么就是非常完美,无需适配,刚好把屏幕填满。

924bc619b7ad53e1b65a677cc57f8671.png


如果是iPhone 5,选择适配宽度,就会出现黑边(只先关注背景,因为其他按钮元素做了适配)。

32d9e29491ce114756b628996fb5dcf3.png


如果是iPhone 5,选择适配高度,屏幕虽然被填满,但是细心一点会发现,背景图的宽度两边是被裁剪了一部分。

2f36f96875488b68ed4c1a429d1ad674.png


如果同时选了适配高度和宽度呢?那么不会裁剪,其效果就是和适配宽度是一样的,因为这样才能保留所有细节,因此垂直方向出现黑边。

Widget 挂件

284f6582c56c21a05080624e7d2518dd.png
图片来自cocos creator官网


Widge称之为对齐挂件:能够根据需要将元素对齐父节点的不同参考位置。其实是一个相对定位组件,相对于自己的父元素。顶部的三个按钮相对于屏幕上边的距离保持不变。

32d9e29491ce114756b628996fb5dcf3.png


先看下图层结构:

a474ed80cb870f721b9752e52acaae42.png


三个元素还有一个父容器: daoju_layout,父容器有一个widget对齐组件,相对于canvas父元素,分别设置了距离left/top/right:20px。因此无论是在哪种设备下,相对画布的位置总是保持不变。所以针对游戏里面那些相对静止的元素可以通过这种定位方式,让整体布局看起来更优雅一点。


那么怎么填满背景的黑边呢?有两种方式
1:设计一张高度更大背景图,那么就能把黑色的区域填充满。
2:让背景存在一定的拉伸,也是通过widget组件

f06449869472e92d11efb2dc9d62a6b8.png


将上下左右全部勾上,且全部是0,这样就可以铺满。
如果是相对纯色的背景,可以采用这种方式。如果背景上的图案拉伸后会很丑就不适合这种,尤其是在iPhoneX下。如下图,拉伸和不拉伸的区别还是挺明显。

70576f75e3ed9370eff6ae45fa02b9b4.png
iPhone 5

ab14f1024896a5aa115aa8ba1ce40f8a.png
iPhone X


这种情况应该把背景图的高度设计大一点就不会出现黑边。不会有一劳永逸的方法,根据游戏的特点,需要开发者自己去调整。最重要的是要理解适配多端背后的原因和原理,搞清楚了这点后,熟悉widget组件的用法就能很快的适配好游戏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值