针对 iOS 14 Web 平台性能变差的优化方案

:ok_hand:

引擎版本:2.0.9

dragonbone 也遇到相同问题,大佬看一下吧,对项目影响严重,谢谢

持续关注中

引擎里面找这两个地方,改成我框选的这样试试,我这边改成这样就没问题了

1赞

开启粒子的 custom,
然后新建个脚本挂在粒子节点上。代码参考:

        const isIOS14Device = cc.sys.os === cc.sys.OS_IOS && cc.sys.isBrowser && cc.sys.isMobile && /iPhone OS 14/.test(window.navigator.userAgent);
        if (isIOS14Device) {
            this.node.getComponent(cc.ParticleSystem).dstBlendFactor = cc.macro.ONE_MINUS_DST_ALPHA;
        } else {
            this.node.getComponent(cc.ParticleSystem).dstBlendFactor = cc.macro.DST_ALPHA;
        }

spine 的问题没复现出来。

好的,感谢。粒子的我试一下。spine的问题是改了引擎后出现的。改后的两个代码文件也放在了demo项目里面的zip文件。只要点击加载只显示一个模型,还有一个不显示。在ios14的手机上。

问题已经复现了,参考这个修改:针对 iOS 14 Web 平台性能变差的优化方案

刚测试了,可以正常显示。谢谢:tulip:

刚测试了,可以显示了。现放到项目中再测试一下。谢谢:tulip:

謝謝 Dragonbone 消失的問題用此方法解決了,辛苦引擎團隊的各位

3D模型旋转等变的巨卡,怎么会正常呢

大大,我们1.X IOS14也有点问题,drawCall增多,Renderer明显异常,对比IOS13。

已解决了这个问题。creator2.2.2和Cocos2.42在main.js里面。onStart方法后面完美解决了。var onStart = function () {

    cc.view.enableRetina(true);
    cc.view.resizeWithBrowserSize(true);

    if (cc.sys.isBrowser) {
        setLoadingDisplay();
    }

    if (cc.sys.isMobile) {
        if (settings.orientation === 'landscape') {
            cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
        }
        else if (settings.orientation === 'portrait') {
            cc.view.setOrientation(cc.macro.ORIENTATION_PORTRAIT);
        }
        cc.view.enableAutoFullScreen([
            cc.sys.BROWSER_TYPE_BAIDU,
            cc.sys.BROWSER_TYPE_BAIDU_APP,
            cc.sys.BROWSER_TYPE_WECHAT,
            cc.sys.BROWSER_TYPE_MOBILE_QQ,
            cc.sys.BROWSER_TYPE_MIUI,
        ].indexOf(cc.sys.browserType) < 0);
    }

    // Limit downloading max concurrent task to 2,
    // more tasks simultaneously may cause performance draw back on some android system / browsers.
    // You can adjust the number based on your own test result, you have to set it before any loading process to take effect.
    if (cc.sys.isBrowser && cc.sys.os === cc.sys.OS_ANDROID) {
        cc.assetManager.downloader.maxConcurrency = 2;
        cc.assetManager.downloader.maxRequestsPerFrame = 2;
    }
    const isIOS14Device = cc.sys.os === cc.sys.OS_IOS && cc.sys.isBrowser && cc.sys.isMobile && /iPhone OS 14/.test(window.navigator.userAgent);
    if (isIOS14Device) {
        cc.MeshBuffer.prototype.checkAndSwitchBuffer = function (vertexCount) {
            if (this.vertexOffset + vertexCount > 65535) {
                this.uploadData();
                this.batcher.flush();
            }
        };
        cc.MeshBuffer.prototype.forwardIndiceStartToOffset = function () {
            this.uploadData();
            this.switchBuffer();
        }
    }

    var launchScene = settings.launchScene;
    var bundle = cc.assetManager.bundles.find(function (b) {
        return b.getSceneInfo(launchScene);
    });

那这ipad上该 怎么判断ios14啊,

请问下这个是改引擎的哪一支档案, 能否麻烦大佬提供路径, 谢谢

OS 14/.test(window.navigator.userAgent);

大哥,你改哪里啦