浏览器,模拟器效率不同,该如何调优?

  • Creator 版本:2.2.0

  • 目标平台: Web / iOS / Android / 模拟器

  • 详细报错信息,包含调用堆栈:浏览器可以跑60帧, 模拟器只有25帧,

  • 编辑器操作系统 :WINDOWS 10 64位

  • 额外线索:动画大概20个 人物动画 5个 每个动画帧上有10图元
    动画设定 20帧
    动画格式是自定义的 按帧播放,每帧上有10个图元左右,

模拟器的 DC比浏览器的多 , 都是同一套代码 为何有此差异, 是否是这里影响了效率!

动画用的Spine么?

方便的话给个demo看下,dc虽然比浏览器要高一些,但是39的dc也不算高。可是你的GameLogic就很奇怪了,游戏逻辑居然一帧要63ms。方便的话给个demo工程,我这边查一下

自定义的格式 按图元拼成帧 然后按时间切换帧显示

for (let i = 0; i < act.actFrame.length; i++) {
this.actFrames[i] = new cc.Node("frame_node" + i);
for (let j = j_start; j < act.actFrame[i].actSprite.length; j++) {
let sprite_node = new cc.Node(“sprite_node_” + j);
sprite_node.parent = this._actFrames[i];
let sprite = sprite_node.addComponent(cc.Sprite);
let actSprite = act.actFrame[i].actSprite[j];
sprite.spriteFrame = this._actModules[actSprite.moduleID];
sprite.node.x = actSprite.x * SCALE;
sprite.node.y = -actSprite.y * SCALE;

这是 把图元拼接成 帧

    this._actFrames[this._currFrameID_show].parent = null;
    if (this._currFrameID >= 0 && this._currFrameID != actAction[index].frameId) {
        this._currFrameID = actAction[index].frameId;
        this._actFrames[this._currFrameID].parent = this.node;
        this._currFrameID_show = this._currFrameID;
    }
    if (this._actFrames[this._currFrameID_show].parent == null) {
        this._actFrames[this._currFrameID_show].parent = this.node;
    }

这是 按时间切换帧

怎么发DEMO?

建议你把动画换成Spine,这样原生下性能会高很多。你这样子每一帧都会进行很多的计算

每帧都是直接渲染而已 , 在载入的时候就已经把图元加到帧NODE上了 !

this._actFrames[this._currFrameID_show].parent = this.node;

this._actFrames[this._currFrameID_show].parent = null;

这些都是啊,还有频繁的enable和onenable的开销

同时虽然你是设置到parent上面,坐标是提前设置到的坐标,但是这个坐标是局部坐标。引擎还要做很多运算。不是说前面你去new的时候就完成了所有运算,后面就只是gpu的渲染

这个是测试

浏览器下 帧率很高啊!

xyol_地图跑动测试.7z.zip (2.9 MB)

这个是 7z 的格式
rar压完超过3MB 不让上传了!

这是老项目移植, 动画有300个 地图有100个
现在修改动画的画要很长时间,所以 只能用老动画,老地图, 没有修改动画的人力资源

额,没出现你那种情况:sweat:
我这边2.2 模拟器跑满帧

待会我再看下win10上的情况

多谢啦!
我的笔记本 系统是 WIN10 64位
显卡是 760

windows上的模拟器预览确实是这样子,我们排查一下原因。后续有结果后回复你

打包APK上 android手机 也是一样的卡!

上手机看了一下
ios 的game logic :48 FPS:18
android 的game logic :80 FPS:11

你之前给的demo,我这边在iOS和Android上都没法跑起来,没法验证。方便的话重新给个demo看下

我新做了个包 ,可以上android手机

链接: https://pan.baidu.com/s/1KQTvcqg-iHnSWBM7hv-tAw 提取码: j3ku

在打包的时候需要修改一下,
比如C++文件需要注销掉声音

另外android studio里的归道文件也需要修改
gradle设置里这个地方需要修改!


替换如下

也可以上IOS手机,
当前的NPC数量不多,我上android手机看过,大概 8帧,
用COCOS CREATOR 的模拟器 大概3帧