Andengine - оптимизация пула объектов или общего пула

Я создаю игру, которая генерирует много спрайтов в какой-то момент, например, пули. Я использую объектный пул, который является общим пулом в andengine. Но проблема, с которой я сталкиваюсь, состоит в том, что она запаздывает, когда объект создается впервые. Как в первый раз, когда объект прикреплен к сцене. Отстает, когда я прикрепляю 100 спрайтов за раз.

Поэтому я подумал, возможно ли загрузить все необходимые объекты и загрузить их в пул во время загрузки сцены.

сейчас мой код выглядит следующим образом..

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 пуль в бассейне для быстрого получения предметов.

Другие вопросы по тегам