android等原生环境帧数低问题解决办法一个参考

  • Creator 版本:2.0.2 2.0.4 2.0.5
  • 目标平台:(Web / iOS / Android / 模拟器) Android
  • 详细报错信息,包含调用堆栈:
  • 重现方式:
  • 之前哪个版本是正常的(可选):
  • 手机型号(可选):
  • 手机浏览器(可选):
  • 编辑器操作系统(可选):
  • 编辑器之前是否有其它报错(可选):

偶现 Bug 请提供

  • 出现概率:100%
  • 额外线索:(场景节点规模 / 项目资源规模等)

我们游戏demo开发完成后发现一个严重问题,那就是原生平台帧数非常低.但是web版正常.
相信很多人都一样遇到这种问题.
因为只是一些简单的ui操作但是android得帧数只有30-40帧 而且!打开的界面越多帧数越低.

首先,我并不相信是js或者引擎性能问题,因为这个事实一些简单的界面操作 不至于帧数这么低.
而且界面打开过的越多帧数越低,我怀疑是代码问题没有隐藏界面或者释放资源之类的问题.但是web版缺没有任何问题,感到非常奇怪.
然后通过观察发现,界面关闭后fps并没有降低,理论上界面关闭active=false之后不会再影响性能问题.但是却影响了.
确定了是界面关闭的问题后开始确定原因.

于是开始排查工作,先锁定了可能会导致问题的地方:界面都是已预制体形式生成的.
1.节点的active和透明度 无效
2.节点的size 无效
3.预制体优化策略
4.label的xxxx ttf字体

游戏里面用了两种字体:A.fft 9m大小 和 B.fft 4m大小
最终算是确认了字体问题,把label的字体B 去掉后一切都正常了 游戏稳定60帧左右

为什么说算是确认了是字体问题. 因为测试过程中发现就算字体不修改预制体得优化策略也对帧数影响很大.
因为解决这个问题后就直接把B字体直接全都去掉了,刚好游戏里面不打算用这个字体.

等去掉之后再来测试这些问题 发现无法完全重现帧数降低bug,又没精力深究这个问题,只能把锅先甩给字体问题了.

以上希望能给其他在原生平台上遇到运行帧数问题低提供一个参考,可以尝试下解决方案.
有用的就两点:1.字体问题,2:预制体的优化策略.

在这个问题里,我有个疑问:打开的节点设置为active=false 为什么还会影响fps,引擎在底层应该还在做什么事情导致虽然关闭了但是fps并没有下降.,这里无法找到原因.

也希望官方能解答下是否会存在这种问题

.ps 我的另外一个项目存在一个bug:web版某毛笔字体显示正常,但是原生平台无法显示.显示的是系统字体

1赞

我一直用的所以系统字体,这算排除字体问题么,而且,我UI里,label,很少················

安卓不会卡顿,很流畅,但是ios 时间长了掉到30帧,而且发热严重!!!

ios 不了解,但是我觉得思路都是一样的,.

首先定位问题,大概率一定是跟我一样通过某个操作可以观察出出现问题的地方 然后再分析问题找解决办法

嗯,我正准备自己检查是什么原因导致的,然后新建一个helloworld,然后···发现在iPhone8上,直接3帧····就在论坛等大佬们看看是什么原因了····

这种大概率都是底层疯狂报错,没弄过ios 不知道ios怎么调试

持續關注



手机型号,游戏界面,所有的log
希望老大们能给个方案·····

真机运行呢

这就是真机啊······看第一张图,是真机的型号信息啊····

androd 红米2plus 也同样出现这类似的问题
打开一个节点fps从60变为45 active设置为false fps还是45
可能也是字体问题,预制体优化策略是优化单次加载,也是有用A和B,最终把字体B去掉!
期间有从2.0.2版本升级到2.0.5

官方测试时,最低机型是 iPhone 5s,版本是 iOS 10.x,iPhone 5,iOS 8.x 测不到。

你可以尝试把脚本引擎切换成 SpiderMonkey 试一下,不用 JavaScriptCore,来验证是不是脚本解析的问题 @valiancer

@leda 我不知道要怎么切换······明天我试一下,给您答复

修改 jswrapper/config.hpp 中的 SCRIPT_ENGINE_TYPE

@leda 我修改的这

可是编译的时候 这个文件报错···

还是得请教,怎么切换脚本引擎···

第一个修改没问题,第二个的原因是 spidermonkey 的库没引进去,你就像引一个第三方 sdk 一样加进去就可以。源码和 lib,都在 external 中。

cocos2d-x-lite/external/ios/include/spidermonkey //头文件
cocos2d-x-lite/external/ios/libs/libjs_static.a //库
cocos2d-x-lite/external/ios/libs/libmozglue.a //库

@leda 大佬,我没更改脚本引擎····但是我下载了一个1.10 在iphone5(同样的机器)上,妥妥的60帧·····
大佬,求解决下啊