关于大背景(背景上有操作)的背景图适配问题

一个棋类游戏,游戏的背景图铺满canvas,且背景图上画有棋盘,想请教大家的问题是。
如何做到适配分辨率不留更黑边,理论上我的应该是高度适配,去处理宽度。因为需要高度上下顶边。且背景图上的可操作的点(或者说坐标)不会随着设备改变而发生偏移。
希望热心大佬能给出一个最佳的解决方案
微信图片_20241030101942

背景图和棋盘要分开吧

我的做在一起了 会有影响吗 还可以适配吗

有影响啊,比例不变的话,肯定会有黑边,比例变了,棋盘坐标就不对了

那是要棋盘和背景分开来吗

背景隔离出来,然后根据屏幕的size 同比例去缩放你bg

现在美术心都这么大吗 直接给一张UI和背景合在一起的图 都不切一下

我是不是可以这么理解,首先,需要背景和棋盘分离开。
然后 根据屏幕的比例,去等比例缩放棋盘。
至于背景,因为基本都是相同的纹理,所以缩放无所谓,只要保证不出现黑边就可以了。

image
标注的1和2分开 缩放1就行了 2不管 该是多大 就是多大(或者根据不同屏幕去算一个比率缩放也行)

好的 谢谢老哥~

        let screen = cc.view.getFrameSize()
        let screenRatio: number = screen.width / screen.height;
        let bgRatio: number = this.node.width / this.node.height;
        //下一帧设置缩放
        setTimeout(() => {
            if (!cc.isValid(this, true)) return
            // 比较两者的宽高比,按需要调整背景图片的scale
            if (screenRatio > bgRatio) {
                // 屏幕比背景图片更宽,需等宽适配
                this.node.scale = cc.winSize.width / this.node.width;
            } else {
                // 屏幕比背景图片更高,需等高适配
                this.node.scale = cc.winSize.height / this.node.height;
            }
        }, 0);

试试这个,把他挂在bg下面

其实还有个更简单的,bg背景直接挂 widget 撑满你的分辨率,主要是看你的背景是比较单调的那种,可以试试,如果是复杂的背景就不能单纯的挂widget,会产生形变

好的,谢谢老哥的热心!另外有个问题是,如果我给bg设置了缩放,那么bg下的按钮子节点,会因为缩放位置出现变化,比如按钮在背景的边缘,如果这时候放大了背景,这个时候就会出现按钮一部分出界的情况(应该是因为背景放大了,导致按钮跟着放大,但按钮的位置没有动态改变吧)我给按钮加了widget也不好使,这是为什么呢

你的按钮只是看着在bg上 其实他不是bg的子节点

这话是啥意思呢 :joy:

image 放大bg 不会对btn有影响

你的bg就是单纯的 一张sprite展示 ,没有子节点


白色是手机屏幕
蓝色是游戏区域,等比缩放可以留黑边
绿色是背景图,只要足够大,就可以挡住一切黑边