2015-01-25 2 views
0

Я создаю игру, в которой используется iOS Sprite Kit + излучатель частиц. Он отлично работает на моем симуляторе, но когда я запускаю игру на своем iphone 6, это супер медленный и лагги, и я могу с ним только взаимодействовать.Измельчитель частиц сверх медленно на iphone 6

Любая идея, почему симулятор настолько отличается от моего телефона, и предложения по его устранению? Очень ценю любые советы!

+1

отправьте свой код. обычно это наоборот, то есть симулятор медленный – LearnCocos2D

ответ

0

Я испытываю то же самое. Как ни странно, производительность iPhone 5 и iPad великолепна. Обычно 60 кадров в секунду.

На iPhone 6 он начинается со скоростью 0-2 кадров в секунду и обычно остается там. Иногда, через 20-30 секунд, он полностью забуферировал все, и я получаю 60 кадров в секунду. Обычно это никогда не делает.

Так что это не просто разница между симулятором и реальным оборудованием. В iPhone и 6+ есть что-то совсем другое (и не так).

Кстати, я считаю полезным создавать SKEmitterNodes с кодом, так как быстрее тестировать разные значения. Вот полезный метод для этого:

- (SKEmitterNode *)buildEmitterWithImageName:(NSString *)imagefile { 

    //instantiate explosion emitter 
    SKEmitterNode *explosion = [[SKEmitterNode alloc] init]; 


    UIImage *image = [UIImage imageNamed:imagefile]; 

    [explosion setParticleTexture:[SKTexture textureWithImage:image]]; 
    [explosion setParticleColor:[UIColor whiteColor]]; 
    [explosion setParticleBirthRate:2]; 
    [explosion setNumParticlesToEmit:0]; 
    [explosion setParticleLifetime:3]; 
    [explosion setParticleLifetimeRange:1]; 
    [explosion setParticlePositionRange:CGVectorMake(60, 40)]; 

    [explosion setEmissionAngleRange:360]; 
    [explosion setParticleSpeed:80]; 
    [explosion setParticleSpeedRange:30]; 
    [explosion setXAcceleration:0.05]; 
    [explosion setYAcceleration:0.05]; 
    [explosion setParticleAlpha:1.0]; 
    [explosion setParticleAlphaRange:0]; 
    [explosion setParticleAlphaSpeed:0]; 
    [explosion setParticleScale:0.35]; 
    [explosion setParticleScaleRange:0.2]; 
    [explosion setParticleScaleSpeed:0]; 
    [explosion setParticleRotation:0]; 
    [explosion setParticleRotationRange:0]; 
    [explosion setParticleRotationSpeed:0]; 

    [explosion setParticleColorBlendFactor:0]; 
    [explosion setParticleColorBlendFactorRange:0]; 
    [explosion setParticleColorBlendFactorSpeed:0]; 
    [explosion setParticleBlendMode:SKBlendModeAlpha]; 

    return explosion; 
} 

В приведенном выше коде, я использовал коэффициент рождаемости 2, и это было до сих пор является проблемой для iPhone 6.

--------- Обновлено с новой информацией ----------

В моем приложении имеется более одного контроллера вида, так как большая часть приложения использует стандартный контроллер навигации. Кроме того, некоторые из этих контроллеров представлений имели свои собственные экземпляры SKView и SKScene.

Это не было проблемой для iPhone 5 и iPad, но это похоже на убийцу для iPhone 6 и 6+. Я сделал эксперимент, когда я уменьшил приложение до одного VC с SKScene и SKEmitterNode, которые я пытался оживить. Внезапно он работает со скоростью 60 кадров в секунду.

FYI, у меня есть 4 эмиттерных узла с различными художественными активами, работающими в этой сцене, и это очень быстро, как и должно быть.

Довольно раздражает, что я должен перепроектировать приложение только из-за этого.