Подтвердить что ты не робот

Создание прозрачного фона SKScene не работает... это ошибка?

Есть ли способ сделать фон SKScene прозрачным и представить эту сцену над другой, просматривая прозрачность.

Идея состоит в том, чтобы фон представленной сцены был такой:

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

что позволит увидеть сцену за темными. Но делать это не работает. Фон представлен полностью непрозрачным.

Есть ли способ сделать это?

4b9b3361

Ответ 1

В iOS 8 вы можете установить сцену SKView, чтобы обеспечить прозрачность и установить цвет фона сцены, чтобы иметь прозрачность. Затем будут видны представления за SKView.

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

Ответ 2

Прозрачность работает только для 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];

Ответ 3

Вы не можете сделать сцену прозрачной. Если вы хотите сделать прозрачным представление.

Однако вы не можете одновременно запускать две сцены (только переход между ними), и, хотя вы можете добавить несколько страниц SKView на страницу раскадровки, только одно из просмотров будет обновляться с полной скоростью, другие замороженные или изменяющиеся содержимое только каждые пару секунд.

Ответ 4

Я думаю, что это невозможно, так как я все пробовал, насколько мне известно, он игнорирует альфа-значение.

Это не логично, поскольку он работает поверх OpenGL, но SKView подклассифицирован из UIView, а не из GLKView.

Ответ 5

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
    }
}