iphone 6上的粒子发射器超慢

时间:2015-01-25 11:30:01

标签: ios iphone performance sprite-kit skemitternode

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

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

1 个答案:

答案 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个发射器节点,在这个场景中运行不同的艺术资产,它应该是超快的。

非常讨厌我因此而必须重新设计应用程序。