渲染优化,如果一个图片是10001000的,不分块的话,那么它就是一个10001000的整体,就算在场景中,它只出现一像素,引擎也会将他整个渲染出来。但是分成若干小块,那么哪一部分出现在舞台,引擎就会渲染哪一部分,这样最大限度减少了渲染的浪费,可以对游戏优化得到很大的提升。
如果引擎是工人,同样的钱,一个每次都要扛着百斤重的物体,一个只拿雇主有用的部分,这可能是一斤,也可能是十斤。那么他们谁先累死?
实际上一个手机屏幕才多大,真的是一个素材是1000*1000的,就算放到屏幕中间,都有好大一部分是不需要的。
再说一下你的误区,以下会针对我的黑小孩多一点。你的想法应该是这样的,如果一个素材不分块的话,那么渲染访问它一个就行了。但如果这个素材被分成了一百块,从一个对像变成了一百个对像,不仅渲染面积没变,而且访问消耗还多了99倍。
想法是没错,但建立在我和cocos什么都没做的情况下才成立。不管什么时候,不用的显示外对像清除掉,都不会错。一个很大的图形对像,如果无法将它不需要的部分清除掉,那么就在它身上毫无痕迹的划几刀,这样大家就都舒服。
再有就是对像的增加以及访问消耗的增加,这个就和我的算法有关了,如果舞台上最大需要100个node,那么之后其实都是这100个node在忙碌着,偶尔对像不够了,也是看实际实况增加几个。
大家各忙各的,忙完了你也不要拍拍屁股就走人,而是换身衣服去做另一件事。这样对像就会稳定在一个非常可观的量。
至于访问遍历的消耗,就更少了。
当一个地图向前移动时,实际需要访问和计算的,就是它前面需要增加的一排对像,和后面需要删除的一排显示对像。如果是向前上移动的话,就是前上和后下,四排显示对像。
比如舞台上有100个Node,那么大多时候,需要确定增删的Node为十到四十个。而且并不是每一像素都查访,如果地形是32像素的,那么就是每移动差不多32像素才检查一次,哪些需要增加,哪些需要删除。
我的那个传奇源码,地面图层是一万个node,如果将数量增至到五万,十万,一百万。那性能也不会有一点变化,这需要一些技巧。如果什么都不做,就和你想的一样了,当舞台有一百万个node就要遍历一百万次,而且每移动一像素都遍历,那可真是疯了。
一开始,我是打算把我做黑小孩的相关设计和经验,都分享出去,但我实在太忙、太多事要做了,光是写一些帖子和弄一些小源码,就让我自顾不暇。等过了这一段时期吧,我会将地图运行的原理,和一些地图场景设计的事,都分享出去。