我正在创建一个使用iOS Sprite Kit +粒子发射器的游戏。它在我的模拟器上运行得很好,但是当我在我的iphone 6上运行游戏时,它的超级缓慢且滞后,我几乎无法与它进行交互。
任何想法为什么模拟器与我的手机如此不同,以及如何修复它的建议?非常感谢任何提示!
答案 0 :(得分:0)
我遇到了同样的事情。奇怪的是,iPhone 5和iPad的表现非常棒。通常是60fps。
在iPhone 6上,它以0-2 fps开始,通常会停留在那里。有时,在20-30秒之后,它已完全缓冲所有内容,我得到60fps。通常,它永远不会在那里。
所以这不仅仅是模拟器和实际硬件之间的区别。 iPhone 6和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。突然,它的工作速度为60fps。
仅供参考,我有4个发射器节点,在这个场景中运行不同的艺术资产,它应该是超快的。
非常讨厌我因此而必须重新设计应用程序。