0

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

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

现在我的代码如下..

bullets = bullet_pool.obtainPoolItem();

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

请给我一些想法。

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

4

1 回答 1

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 颗子弹,以便快速获取物品。

于 2015-02-06T20:28:10.473 回答