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