同样关注~~~~~
原生端panda老师在进行升级了 ,另外在1.4的时候对生成节点进行了优化,推荐使用复制节点来生成
instantiate ( original ) Object
复制给定的对象
Instantiate 时,function 和 dom 等非可序列化对象会直接保留原有引用,Asset 会直接进行浅拷贝,可序列化类型会进行深拷贝
关注关注~~~
上面例子性能热点明显是在原生引擎的一些处理上,我晚上的调试发现有两个地方严重影响性能:
1。在Node::postInsertChild
里面,有如下代码:
if (_cascadeOpacityEnabled)
{
updateCascadeOpacity();
}
每插入一个结点,就会调用一次updateCascadeOpacity
,而这个函数就递归遍历子结点,设置他们的Opacity。
问题在于,这个时机没有必要调用这个函数吧,只需要设置子结点的opacity就行了呀?
把这个去掉之后,由原来的242减到了120左右 ,但每次点击还是会增长时间。
2。在Node::insertChild
里面有一段代码:
#if CC_ENABLE_GC_FOR_NATIVE_OBJECTS
auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine();
if (sEngine)
{
sEngine->retainScriptObject(this, child);
}
#endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS
我把它注释掉之后,时间变成了70左右,且再也不会增长了。这段应该是会自动管理原生对象的生命周期的吧?
看起来,这里原生的坑还是不少的。
楼主有心了,持续关注
赞一个
哥们,你比我好多了,我做像素画游戏,创建5000个格子,接近20秒才进去的,然后我想提高分辨率,创建了50万个格子,就没有进去过。等了半天程序崩溃了
50万。。。每一个像素都是一个格子么
你该更换实现方式了,不能一个格子一个结点
楼主 关注~~~~~
这个我也碰到了。
如果第一次进入场景load 1000个节点,时间是1秒的话。
退出后,内存正常释放
第二次再进入场景,时间是1秒+n秒!
n的时长跟进入场景的次数有关!
于是进出10次场景以后,明显感觉,越来越慢,越来越慢。
用户玩你的游戏关卡,玩到第十关,要开始抱怨了,玩到20关,就可以先去点支烟了。
这是超级巨坑啊。
感谢楼主测试和反馈,JSB 的性能问题正在解决。
这个现象我们也遇到了
请问,楼主调试的方式是?
我们也在做优化, 目前对于时间消耗的采集没有一个很好的方法.
支持一个!
顶一个。、。。。。。。
我也发现这个问题了。WEB上打开界面快,在android上有点卡卡的。。顶起来
已经对现有cocos版本做了改动,效果还不错
老铁,任天堂当年的像素游戏要是这么做,红白机能带动吗。。