物理分辨率
硬件所支持的分辨率,以像素(px)为单位。
以屏幕实际存在的像素:行数(高)*列数(宽)这样的数学表达方式体现出来。
游戏开发的屏幕适配
以屏幕宽(列)*屏幕高(行)(px)这样来体现。
逻辑分辨率
软件所使用的分辨率
游戏的设计与适配全靠它
也是用乘法数学表达方式来体现
在web中,单位是CSS像素
关系
物理分辨率 = 逻辑分辨率 * 缩放因子
设备像素比DPR
Device Pixel Ratio的缩写。指逻辑像素(CSS像素)与设备像素之间的比率。
影响CSS像素缩放的原因
1、DPR(Laya.Browser.pixelRatio)
2、用户自主缩放导致
需要:禁止用户缩放,强制使用DPR
物理宽高、逻辑宽高、画布宽高
逻辑宽高*DPR~=物理宽高
画布宽高尽可能与物理宽高一致,以较少拉伸。
从引擎API中获取
逻辑宽Laya.Browser.clientWidth
逻辑高Laya.Browser.clientHeight
物理宽Laya.Browser.width
物理高Laya.Browser.height
设计宽高
开发者在设计产品时采用的宽高(一般:750*1334/750*1624)
选择时使用物理分辨率
Laya设置:项目设置/设计宽度+设计高度
适配宽高
适配规则改变后的可显示宽高,通过viewport,DPR缩放前的宽高
舞台宽高
LayaAir引擎的stage宽高
只有舞台全屏,才能真正做到全屏适配
full、fixedwidth、fixedheight、fixedauto的适配模式下,stage全屏覆盖
锯齿
像素斜向连接产生锯齿。
引擎内置抗锯齿(弱化锯齿)
init()前,
Config.isAntialias = true;
抗锯齿失效原因:
1、Camera HDR开启时(关闭:this.camera.enableHDR = false;)
2、后期处理管线的BloomEffect泛光效果
画布最佳状态
屏幕适配模式full,使用视网膜画布模式
开启视网膜画布模式
init()前,
init()后,
动态控制开启和关闭
scaleMode、width、height、alignH、alignV
通过引擎的setScreenSize,让useRetinalCanvas模式生效
开启视网膜画布模式的利弊
弊:性能
利:减弱锯齿,设计分辨率低也可以高清、最佳效果的最优性能画布方案、让3D适配更简单
最容易理解的屏幕适配模式
其它的屏幕适配模式
设置
项目设置/场景适配模式
检测手机屏幕的状态
物理宽/物理高:小于1的是竖屏,否则是横屏
自动横屏:horizontal
表现:游戏水平方向,始终与屏幕最短边保持垂直
原理:检测到手机竖屏状态,画布旋转90度(注意:自动横屏的只是画布)
自动竖屏:vertical
表现:游戏水平方向,始终与屏幕最长的一边保持垂直
原理:检测到手机竖屏状态,画布旋转-90度
默认值:none
表现:游戏水平方向始终与屏幕高保持垂直
原理:不作改变
设置:
项目设置/场景横竖屏