Andengine - 对象池或通用池优化
Andengine - Object pool or generic pool optimisation
我正在创建一个游戏,该游戏会在某些时候生成许多精灵,例如子弹。
我正在使用对象池,它是 andengine 中的通用池。
但是我面临的问题是第一次创建对象时它会滞后。至于第一次,当对象附加到场景时。当我一次附加 100 个精灵时它会滞后。
所以我在想是否可以在加载场景时加载所有需要的对象并将其加载到池中。
目前我的代码如下..
bullets = bullet_pool.obtainPoolItem();
if(!bullets.hasParent())
{
Presentscene.attachChild(bullets);
}
请给我一些想法。
我可以在比赛前在池中加载 100 个对象(精灵),这样它就不会在游戏中途滞后为池创建新对象。
您可以在游戏的加载顺序中预先加载您想要的子弹数量。像这样:
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 颗子弹以快速获取物品。
我正在创建一个游戏,该游戏会在某些时候生成许多精灵,例如子弹。 我正在使用对象池,它是 andengine 中的通用池。 但是我面临的问题是第一次创建对象时它会滞后。至于第一次,当对象附加到场景时。当我一次附加 100 个精灵时它会滞后。
所以我在想是否可以在加载场景时加载所有需要的对象并将其加载到池中。
目前我的代码如下..
bullets = bullet_pool.obtainPoolItem();
if(!bullets.hasParent())
{
Presentscene.attachChild(bullets);
}
请给我一些想法。
我可以在比赛前在池中加载 100 个对象(精灵),这样它就不会在游戏中途滞后为池创建新对象。
您可以在游戏的加载顺序中预先加载您想要的子弹数量。像这样:
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 颗子弹以快速获取物品。