使SKScene的背景透明不起作用......这是一个错误吗?

时间:2013-09-19 12:20:55

标签: iphone ios ipad sprite-kit

有没有办法让SKScene的背景透明,并通过透明度将该场景呈现在另一个场景上。

这个想法是让所呈现场景的背景如下:

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

什么可以让人看到背后的场景变暗。但这样做并不奏效。背景呈现完全不透明。

有办法吗?

5 个答案:

答案 0 :(得分:73)

在iOS 8中,您可以设置场景的SKView以允许透明度并将场景的背景颜色设置为具有透明度。然后会看到SKView背后的观点。

UIView *parentView = ...;
[parentView addSubview:backgroundView];
[parentView addSubview:skViewWithScene];
skViewWithScene.allowsTransparency = YES;
scene.backgroundColor = [UIColor clearColor];
[skViewWithScene presentScene:scene];

答案 1 :(得分:7)

透明度仅适用于iOS 8,必须检查iOS 7

在ViewController中将透明度设置为:

SKView *skView = (SKView *)self.mySKView;
SKScene *skScene = [MyScene sceneWithSize:skView.bounds.size];
skScene.scaleMode = SKSceneScaleModeAspectFill;
skView.allowsTransparency = YES;
[skView presentScene: skScene];

在MyScene.m中将背景设置为清晰的颜色:

self.scene.backgroundColor = [UIColor clearColor];

答案 2 :(得分:4)

swift 3

@IBOutlet var gameScene: SKView!

func setupGameScene(){

    if let scene = SKScene(fileNamed: "GameScene") {
        scene.scaleMode = .aspectFill
        scene.backgroundColor = .clear
        gameScene.presentScene(scene)
        gameScene.allowsTransparency = true
        gameScene.ignoresSiblingOrder = true
        gameScene.showsFPS = true
        gameScene.showsNodeCount = true
    }
}

答案 3 :(得分:2)

您无法使场景透明。如果你有什么想让视图透明的话。

但是,您不能同时运行两个场景(仅在它们之间进行转换),并且您可以将多个SKView添加到Storyboards页面,只有其中一个视图将全速更新,其他视图将被冻结或更改内容只有每两秒钟。

答案 4 :(得分:1)

我认为这是不可能的,因为我根据我的知识尝试了所有内容,它一直忽略了alpha值。

这不符合逻辑,因为它在OpenGL之上工作,但SKView是从UIView而不是GLKView的子类。