我可以为CCNode转换.visible值,但是我想知道,一个不可分割的节点能否比可见节点消耗更少的内存/处理?我可以将.visible属性设置为{{1}当我的对象在屏幕外进行优化时?或者cocos2d已经为我做了那些事情?
答案 0 :(得分:4)
在呈现时通常会跳过不可见节点。另一方面,可见设置为YES的节点将调用OpenGL绘制调用,无论它们是在屏幕上还是在屏幕外(参见Riq的注释here)。即。 cocos2d似乎没有对屏幕外元素执行任何类型的剔除。
如果确实如此,我只是设置visible = NO(没有伤害,绝对不是很难!)如果它们完全不在屏幕上,以避免调用任何额外的绘制调用。另请注意,这些屏幕外节点对象仍然存在,并且仍占用相同的内存,即使它们的可见设置为NO也是如此。此外,如果这些节点已经在运行某些动画/动作,它们将继续在屏幕外更新,除非您取消预定。
答案 1 :(得分:2)
查看官方cocos2d论坛中的帖子
is rendering invisible sprites in spritebatchnode cheap?
Performance Difference between visible = no and removeChild
Bad perfomance - many sprites with the same texture
此外,您可以自己测试,但我认为这些帖子会有所帮助。
IMO设置可见= NO就足够了,但取决于精灵数量。