2015-02-06 52 views
0

我正在创建一个游戏,在子弹等某些位置生成许多子画面。 我正在使用的对象池是andengine中的通用池。 但是我面临的问题是它第一次创建对象时滞后。至于第一次,当物体附着在场景中时。当我一次附加100个精灵时,它会滞后。Andengine - 对象池或通用池优化

所以我想,如果它可能加载所有需要的对象,并在加载场景中加载它到游泳池。

现在我的代码如下..

bullets = bullet_pool.obtainPoolItem(); 

if(!bullets.hasParent()) 
    { 
    Presentscene.attachChild(bullets); 
    } 

请建议我的一些想法。

我可以在游戏之前在游泳池中加载100个物体(精灵),以便它不会在游戏中间为游泳池创建新鲜物体。

回答

1

您可以在游戏的加载顺序中预加载您想要的子弹数量。事情是这样的:

private void preloadBullets(){ 
    Bullet[] bulletArr = new Bullet[1000]; 
    // Create the new bullets 
    for (int i=0; i<1000; ++i){ 
     bulletArr[i] = bullet_pool.obtainPoolItem(); 
    } 
    // Recycle all bullets 
    for (int i=0; i<1000; ++i){ 
     bullet_pool.recyclePoolItem(bulletArr[i]); 
    } 
} 

这样一来,如果你的游戏运行之前调用preloadBullets,你将有1000发子弹在游泳池快速获取物品回收。

+0

谢谢...这有帮助 – 2015-02-18 05:53:06