求助,如何动态设置适配策略

如题,比如宽高比是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);

        })

    }