Andengine - 对象池或通用池优化

时间:2015-02-06 12:53:38

标签: android object sprite andengine objectpool

我正在创建一个游戏,在某些点上产生许多精灵,比如子弹。 我正在使用对象池,它是andengine中的通用池。 但我面临的问题是,当第一次创建对象时,它会滞后。至于第一次,当对象附加到场景时。当我一次附加100个精灵时,它会滞后。

所以我在考虑是否可以在加载场景时加载所有必需的对象并将其加载到池中。

现在我的代码如下..

bullets = bullet_pool.obtainPoolItem();

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

请给我一些建议。

我可以在游戏之前在游泳池中加载100个对象(精灵),这样它就不会在游戏中间滞后来为游泳池创建新鲜物体。

1 个答案:

答案 0 :(得分: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,您将在池中循环使用1,000颗子弹,以便快速获取项目。