我们知道一个游戏比如跑酷类型的游戏,游戏元素会不断重复。游戏元素会不断从屏幕右边创建出来,当一个元素移出左边屏幕时,又会消失掉。如果不断地new 对象,release 对象 会有性能影响。如何优化呢?就涉及到缓存池的概念。
再举一个例子:一个主角在一个竞技场中不断杀怪。每次有5个怪出现,杀死一个又会出来一个。每次出怪就new 怪,死亡怪就release怪,会很浪费的。已经死亡的怪,我们简单地给他补满血不就可以重复使用了嘛!像拍电影,一个人不是真正死亡,只是看起来死了,还是可以重复使用的嘛!
我们可以事先new10个怪放入到一个数组中,简单把这个数组称作缓存池,其实就是一个数组。再搞个int的变量表示取数组中第几个怪,初始化为0,表示取第一个怪。
1.当我们想要从屏幕中创建一个新怪时,不去new,而是用那个int变量从数组中取一个怪拿来用,当然拿来用之后,还要简单的初始化下,给他补满血啊,穿上完整衣服等等。再把int变量加1,如果int变量等于数组的长度时,把它归0。
2.当一个怪被主角杀死时,让这怪播完死亡动画后,就remove掉,但不把他完全release掉。
差不多实现就是这样,简单吧!只是注意初始缓存池,new对象的数量。一般要大于你实际使用的数量。
上一篇 汉诺塔问题的递归实现
下一篇 出来混,迟早是要还的!(篇一)