如下图,我把webGL 改成了 canvas渲染以后,节点直接上天的多,然后掉帧的很厉害,谁能告诉我一套优化的思路,我应该如何下手去优化canvas的渲染?
兄弟,请教一个问题: ‘点’很多的时候遍历蛇头会导致很卡, 现在我把屏幕外的点和部分蛇 active 设为 false,可是在安卓上跑还是很卡,有什么好的解决办法吗?
并没有,我现在还没到优化的时候,还在写功能,只能慢慢找问题了,太底端的机子也没办法,还有就是有可能你的那个安卓手机是canvas渲染的,不是webGL所以就会更卡,so 我也在找人回答我的问题呢
哦哦 同问,顶顶顶,大神快来
为何我发现像这种贴子官方都不回答,因为优化不好?
这个看过了,基本都有用到,我只是不明白,为什么安卓和苹果区别会这么大,两个渲染方式不一样,节点就会全出来?隐藏不了?
就好像在安卓上面active没有用一样
修正一下,应该是在用canvas渲染的时候,active没有作用,
WebGL和Canvas是很不一样。WebGL性能高。我看引擎源代码里面active=false的时候是创建一个空渲染节点代替原渲染节点,active=true的时候再替换回来。因此node数没有变。你看看能不能Canvas外的节点不但设置active=false,也不去设置position?或者放回对象池?进入Canvas时再加进来。
发现问题了,好像是因为sprite设置了type : TILED,然后就会显示渲染节点很多
你的游戏东西基本都在动,最好不要开脏矩形吧。游戏开始时运行下面的代码关闭脏矩形:
if (cc._renderType === cc.game.RENDER_TYPE_CANVAS) {
cc.renderer.enableDirtyRegion(false);
}
微信完全跑不动啊,我刚去看了Layabox人家500个精灵,只画一次,全屏动画,流畅的不行啊
我的一个场景不只500个精灵,刚用微信运行了一下,也很流畅啊。你试试用Chrome的Profile看看哪里消耗时间比较多?像Panda视频里那样。(我也没做过)
creator怎么查看当前是什么渲染模式
cc._renderType代表渲染模式
// Canvas
cc._renderType === cc.game.RENDER_TYPE_CANVAS
// WebGL
cc._renderType === cc.game.RENDER_TYPE_WEBGL
我现在因为用了是原生的碰撞,所以节点本身不能active,因为如果直接给节点本身加了active那么,这个节点就不在了,碰撞也就失效了,这样会导致我屏幕外的蛇就不会发生碰撞了,我现在的做法是,给原来的节点的父级加了一个空节点,对这个空节点加碰撞,子节点 才是渲染节点,然后当父节点跑到屏幕外的时候,对子节点进行active false,我这种做法欠妥么,目前我也只能想到这种笨方法了
我刚测试了一下,发现微信 的渲染用的是canvas渲染,打印出来是0 有没有什么办法强制微信 为webGL渲染
