如题,比如宽高比是640/960的时候用 Fit Height,比例是540/960的时候用 Fit Width,就是可以有黑边,但不能有裁剪
那Fit Height和Fit Width都勾选就可以了
1赞
// 屏幕适配方案
cc.Canvas.prototype.applySettings = function () {
let designSize = this.designResolution;
if (CC_EDITOR) {
cc.engine.setDesignResolutionSize(designSize.width, designSize.height);
}
else {
if (cc.sys.isMobile) {
// 竖屏FIXED_WIDTH 横屏FIXED_HEIGHT
cc.view.setDesignResolutionSize(designSize.width, designSize.height, cc.ResolutionPolicy.FIXED_WIDTH);
} else {
cc.view.setDesignResolutionSize(designSize.width, designSize.height, cc.ResolutionPolicy.SHOW_ALL);
}
}
};
UI和背景还需要使用widget对齐
1赞
get 到 当前场景的Canvas,然后进行设置适配方式就可以了 :
比如宽度适配
canvas.fitWidth = true;
canvas.fitHeight = false;
1赞
private autoAdaptResolution() {
cc.director.on(cc.Director.EVENT_BEFORE_SCENE_LAUNCH, (scene: cc.Scene) => {
let size = cc.view.getVisibleSize();
let ratio = size.height / size.width;
let normalRatio = 1.777777;
if (hf.productCfg.AutoAdaptResolution === 2) {
normalRatio = 2;
}
let canvasNode = cc.find('Canvas', scene);
if (!canvasNode) {
throw `SdkScene autoAdaptResolution-> ${scene.name}场景必须存在一个Canvas节点且名字为 Canvas`;
}
let canvas = canvasNode.getComponent(cc.Canvas);
if (ratio < normalRatio) {
canvas.fitHeight = true;
canvas.fitWidth = false;
}
else {
canvas.fitHeight = false;
canvas.fitWidth = true;
}
hf.event.emit(hf.Constant.HF_SDK_EVENT_KEYS.HF_AUTO_ADAPTER_RESOLUTION);
})
}