一个小项目用到了box2d,用手机webview跑没有任何问题,跑满60帧,今天尝试打成原生安卓包,在模拟器上跑卡的不行,有时候帧率都只有个位数,原生比网页性能还要差吗?我看社区也有人反馈但是没有看到能解决的回复,引擎版本是3.8.0 @jare
请问打包 android 是用 release 模式编译 c++ 代码吗?
不卡,一定是你没有开启原生编译模式。
怎么开启原生编译模式
我是按照文档来操作的,文档里面没看到说有“用release 模式编译 c++ 代码”
https://docs.cocos.com/creator/manual/zh/editor/publish/android/build-example-android.html
请问怎么算是用release模式编译c++代码
有没有勾选
这个平滑帧率的勾选了
在真机上跑试试看。模拟器上不知道什么未知原因,特别卡。
另外cocos的native的优化不如web,例如文件getData是同步的,会让主线程吃下io的卡顿,这个如果碰到卡顿的时候可以参考里面image的加载,移到线程池里面读文件,会减少不少卡顿(读json或者cconb文件的时候)。其他地方就需要有优化能力的去分析了。
左下角的profiler显示Physics耗时达到了100多ms,场景里面就10来个碰撞对象,只要对象发生碰撞就必然掉帧
上面说了release 模式 模式,你自己看看在 Android stuio怎么打包的
不要勾选 Swappy 试试。
然后,如果你是在 android studio 中打包,确保 Build Variants
中选择了 release
如果是在编辑器构建面板中直接运行,那么确保关闭调试模式
。
1赞
是release模式,采用了3.8.1的基于 Box2D-wasm 的 2D 物理系统帧率可以稳定60帧,这两者的差别有这么大吗?
box2d wasm 的版本性能是至少会比 box2d js 版本好至少一倍以上的。
原来是这样,我还一直查代码