0

我正在创建一个使用 iOS Sprite Kit + 粒子发射器的游戏。它在我的模拟器上运行得非常好,但是当我在我的 iphone 6 上运行游戏时,它非常缓慢和滞后,我几乎无法与之互动。

知道为什么模拟器与我的手机如此不同,以及如何修复它的建议吗?非常感谢任何提示!

4

1 回答 1

0

我正在经历同样的事情。奇怪的是,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 个发射器节点,在这个场景中运行不同的艺术资产,它应该是超快的。

正因为如此,我不得不重新设计应用程序,这很烦人。

于 2015-04-18T21:04:52.270 回答