38

有没有办法让 SKScene 的背景变得透明,并通过透明度呈现另一个场景。

我们的想法是让呈现场景的背景像这样:

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

什么可以让看到背后的场景变暗。但这样做是行不通的。背景呈现完全不透明。

有没有办法做到这一点?

4

5 回答 5

77

在 iOS 8 中,您可以将场景的 SKView 设置为允许透明,并将场景的背景颜色设置为具有透明性。然后将看到 SKView 后面的视图。

UIView *parentView = ...;
[parentView addSubview:backgroundView];
[parentView addSubview:skViewWithScene];
skViewWithScene.allowsTransparency = YES;
scene.backgroundColor = [UIColor clearColor];
[skViewWithScene presentScene:scene];
于 2014-06-30T16:02:44.507 回答
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];

于 2015-05-13T11:40:36.920 回答
5

迅速 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
    }
}
于 2017-07-16T19:27:02.693 回答
2

你不能使场景透明。如果有什么你想让视图透明的。

但是,您不能同时运行两个场景(仅在它们之间转换),并且虽然您可以将多个 SKView 添加到 Storyboards 页面,但只有一个视图会全速更新,而其他视图仅在每个几秒钟。

于 2013-09-20T08:52:19.783 回答
1

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

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

于 2013-09-19T17:40:31.833 回答