0

所以我在我正在测试的应用程序的 Skview 中设置了一个 skscene。我像这样设置背景颜色等。

    SKView *skBG = [[SKView alloc] initWithFrame:self.view.bounds];
    SKScene *scene = [SKScene sceneWithSize:self.view.bounds.size];

    // Set the scale mode to scale to fit the window
    scene.backgroundColor = [SKColor colorWithRed:0.12f green:0.2f blue:0.27f alpha:1.0f];
    scene.scaleMode = SKSceneScaleModeAspectFit;
    [skBG presentScene:scene];

    NSString *myParticlePath = [[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"];
    SKEmitterNode *snowParticle = [NSKeyedUnarchiver unarchiveObjectWithFile:myParticlePath];
    snowParticle.particlePosition = CGPointMake(160, 284);

    scene addChild:snowParticle];
    [self.view addSubview:skBG];

然后我想在已经呈现的场景上随机更改背景背景颜色。我附加了一个标准计时器,在 5 秒后被调用,并在其中执行如下操作:

self.scene.backgroundColor = [SKColor colorWithRed:0.5f green:0.5f blue:0.5f alpha:1.0f];

但是不更新?我尝试用“[skView presentScene:scene];”来表示场景 但不起作用。

4

1 回答 1

1

嗯,没有那么多,但从你实际分享的内容来看,你可能实际上并没有显示 self.scene 属性。在您设置 SKView 的代码中,您拥有:

SKScene *scene = [SKScene sceneWithSize:self.view.bounds.size];

但这与 .scene 属性不同(除非您在self.scene = scene;方法内的某个地方做某事)。根据我们所掌握的少量信息,我猜你要么没有显示 self.scene 属性,要么用新的瞬间覆盖它。如果情况确实如此,那么它应该像改变你所要做的一样简单:

SKView *skBG = [[SKView alloc] initWithFrame:self.view.bounds];
_scene = [SKScene sceneWithSize:self.view.bounds.size]; 

// Set the scale mode to scale to fit the window
self.scene.backgroundColor = [SKColor colorWithRed:0.12f green:0.2f blue:0.27f alpha:1.0f];
self.scene.scaleMode = SKSceneScaleModeAspectFit;
[skBG presentScene:self.scene];

NSString *myParticlePath = [[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"];
SKEmitterNode *snowParticle = [NSKeyedUnarchiver unarchiveObjectWithFile:myParticlePath];
snowParticle.particlePosition = CGPointMake(160, 284);

self.scene addChild:snowParticle];
[self.view addSubview:skBG];
于 2014-02-02T10:28:29.117 回答