Я испытываю то же самое. Как ни странно, производительность 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 эмиттерных узла с различными художественными активами, работающими в этой сцене, и это очень быстро, как и должно быть.
Довольно раздражает, что я должен перепроектировать приложение только из-за этого.
отправьте свой код. обычно это наоборот, то есть симулятор медленный – LearnCocos2D