web-dev-qa-db-ja.com

SKSceneの背景を透明にしても機能しない...これはバグですか?

SKSceneの背景を透明にして、その透明度を通して見えるシーンを別のシーンの上に提示する方法はありますか?.

アイデアは、次のような提示されたシーンの背景を持つことです:

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

背後のシーンが暗くなるのを許可するもの。しかし、これはうまくいきません。背景は完全に不透明です。

それを行う方法はありますか?

35
SpaceDog

IOS 8では、シーンのSKViewを設定して透明度を許可し、シーンの背景色を透明度に設定できます。次に、SKViewの背後にあるビューが表示されます。

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

透明性は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];

7
user1802778

スウィフト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
    }
}
5
Ahmed Safadi

シーンを透明にすることはできません。どちらかと言えば、ビューを透明にしたいでしょう。

ただし、2つのシーンを同時に実行することはできません(それらの間の移行のみ)。複数のSKViewをストーリーボードページに追加できますが、ビューの1つだけがフルスピードで更新され、他のビューはすべてのフリーズまたはコンテンツの変更のみを行います数秒。

2
LearnCocos2D

それは不可能だと思います。私の知る限りすべてを試したので、アルファ値は無視され続けています。

OpenGL上で動作するため、これは論理的ではありませんが、SKViewはGLKViewではなくUIViewからサブクラス化されます。

1
Kex