微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Cocos性能优化笔记一 - 节点

1.降低节点复杂度

节点树越复杂刷新的成本越高(也就是节点树的深度尽量浅)。

2.减少添加删除节点操作

当前版本的cocos(1.7.2)中的节点树刷新机制是:

节点普通操作(setActive、设置position、rotation)将刷新该节点及其子节点

节点特殊操作(addChildremoveFromParent)将刷新整个节点树。

所以要尽量少使用 node.addChild() 和 node.removeFromParent()操作。

3.遮盖剔除优化


cocos认是开启遮盖剔除的,但如果我们项目中的节点结构较为复杂,那么遮盖剔除就会很消耗性能(需要计算多层级的节点位置的累计来判定是否在摄像机的视野中,层级越复杂计算量就越大)。

是否使用cocos自带的遮盖剔除要看实际情况,如果节点结构较为复杂,遮盖剔除消耗大以及节点大小较为容易的等效为一个圆则可以关闭cocos自带的遮盖剔除并可以考虑自己来写一套遮盖剔除,这里等效圆是因为圆与圆之间的关系能够很容易计算(计算两个圆心的距离和圆的半径就可以轻易得出)。

比如一辆坦克,他有很多的节点(车体、炮塔等),那么我们以他的根节点为圆形。


如上图,物体A、B、C,把他们抽象为圆,通过上面提到的计算公式,就可以很容易判定,物体A和B不能剔除,而物体C可以剔除,考虑到玩家的体验所以剔除的判定范围要稍微比摄像机的视野要大一些,避免物体突然出现的尴尬。

设置遮盖剔除:cc.macro.ENABLE_CULLING = true/false;

设置节点渲染:node._sgNode.visible=true/false;

这里要注意cc.macro.ENABLE_CULLING管理的不包括TiledMap的遮盖剔除。

设置TiledMap遮盖剔除:cc.macro.ENABLE_TILEDMAP_CULLING = true/false;

原文地址:https://www.jb51.cc/cocos2dx/338230.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐