无法在 iOS9 中暂停 SKEmitterNode

Unable to pause SKEmitterNode in iOS9

我已经尝试了一些解决方法,但我仍然无法暂停 iOS9 上的现有粒子。我正在使用以下技术暂停场景:

重点是我不暂停视图,而是暂停场景。我没有暂停视图,因为

这是可以在 iOS9 上重现此问题的代码:

#import "GameScene.h"

@interface GameScene ()

@property (nonatomic, strong)SKEmitterNode *emitter;

@end

@implementation GameScene


-(void)didMoveToView:(SKView *)view {


    [self addChild:[self getSpaceDustEmitter]];

}

//No need for this method though :)

-(SKEmitterNode*)getSpaceDustEmitter{

    self.emitter =  [NSKeyedUnarchiver unarchiveObjectWithFile:[[NSBundle mainBundle] pathForResource:@"spacedust" ofType:@"sks"]];
     self.emitter .name = @"emitter_spacedust";
    self.emitter .position = CGPointMake(CGRectGetMidX(self.frame),self.frame.size.height);



    return  self.emitter ;
}


@end

所以,非常简单的示例在 iOS8 上有效,但在 iOS9 上未按预期工作。发生的情况是,即使一切看起来都已暂停,但事实并非如此。如果场景没有暂停,取消暂停后的现有粒子会移动到它们应该在的位置。此外,看起来粒子也在不断产生,如果暂停时间过长,在取消暂停时会产生明显的滞后...

这是粒子编辑器的截图:

谁有一些合理的解释?到目前为止,我已经尝试明确暂停发射器:

emitterNode.paused = YES;

它没有用,实际上这应该在场景暂停时自动完成(发射器被添加到场景中)。尝试的另一件事是设置 emitter.particleSpeed = 0; 以及 emitter.particleSpeedRange = 0;emitter.particleBirthRate = 0; 但这不会影响已经存在的粒子(这是有道理的)。

就是这样。不确定这是否是一个错误,但我 运行 没有想法...

暂停场景:

currentScene.speed = 0
currentScene.paused = true

取消暂停场景

currentScene.speed = Variables.gameSpeed
currentScene.paused = false

这对你有用吗?

PS:您正在使用哪个 iOS 版本?我读过有关 iOS9.1 的问题,这些问题似乎在 9.3 中得到了纠正,关于那些发射器。