我正在创建一个使用 iOS Sprite Kit + 粒子发射器的游戏。它在我的模拟器上运行得非常好,但是当我在我的 iphone 6 上运行游戏时,它非常缓慢和滞后,我几乎无法与之互动。
知道为什么模拟器与我的手机如此不同,以及如何修复它的建议吗?非常感谢任何提示!
我正在创建一个使用 iOS Sprite Kit + 粒子发射器的游戏。它在我的模拟器上运行得非常好,但是当我在我的 iphone 6 上运行游戏时,它非常缓慢和滞后,我几乎无法与之互动。
知道为什么模拟器与我的手机如此不同,以及如何修复它的建议吗?非常感谢任何提示!
我正在经历同样的事情。奇怪的是,iPhone 5 和 iPad 的性能非常好。通常为 60 帧/秒。
在 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+ 的杀手锏。我做了一个实验,我将应用程序简化为一个带有 SKScene 和 SKEmitterNode 的单个 VC,我正在尝试制作动画。突然,它以 60fps 的速度工作。
仅供参考,我有 4 个发射器节点,在这个场景中运行不同的艺术资产,它应该是超快的。
正因为如此,我不得不重新设计应用程序,这很烦人。