首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spritekit场景转换工作不正确

spritekit场景转换工作不正确
EN

Stack Overflow用户
提问于 2017-10-23 10:45:24
回答 1查看 35关注 0票数 1

我在spritekit应用程序的场景转换中遇到了麻烦,它写在了快速4上

我有一个gameover.swift文件声明EndScene类:

代码语言:javascript
复制
import Foundation
import SpriteKit

class EndScene: SKScene, SKPhysicsContactDelegate {


var RestartButton : UIButton!
var HighScore : Int!
var HighScoreLabel : UILabel!
var GameOverLabel : UILabel!
override func didMove(to view: SKView) {

    self.scene?.backgroundColor = SKColor.white

    RestartButton = UIButton(frame: CGRect(x:0, y:0, width: view.frame.size.width/3
        , height: 30))
    RestartButton.titleLabel?.adjustsFontSizeToFitWidth = true
    RestartButton.center = CGPoint(x: view.frame.size.width/2 , y: view.frame.size.height/1.5)
    RestartButton.setTitle("restart", for: UIControlState.normal)
    RestartButton.showsTouchWhenHighlighted = true
    RestartButton.setTitleColor(SKColor.black, for:  UIControlState.normal)
    RestartButton.addTarget(self, action: #selector(EndScene.Restart), for: UIControlEvents.touchUpInside)
    self.view?.addSubview(RestartButton)




    GameOverLabel = UILabel (frame: CGRect(x:0, y:0, width: view.frame.size.width/3.8, height: 30))
    GameOverLabel.center = CGPoint(x: view.frame.size.width/2 , y: view.frame.size.height/10)
    GameOverLabel.textColor = SKColor.red
    GameOverLabel.text = "Game Over"
    self.view?.addSubview(GameOverLabel)

}

func Restart(){
    RestartButton.removeFromSuperview()
    GameOverLabel.removeFromSuperview()
    self.removeAllChildren()
    self.view?.presentScene(GameScene(), transition: SKTransition.reveal(with: .up, duration: 0.3))


}

 }

GameScene是在GameScene.swift文件中声明的类。它包含描述游戏过程的类声明。

问题是:

当游戏从GameScene开始时,它的工作原理是正确的(所有的对象都是淹没的,物理工作的),但是当我从EndScene重新启动游戏时,它的工作原理是不正确的(一个对象有时会被淹没,但是其他所有的对象都不会被淹没,甚至背景色也不会被淹没)。

一般情况下,它能带来什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-23 11:09:16

您不应该仅仅通过调用GameScene的无参数初始化器来创建它。查看GameScene是如何在生成的GameViewController.swift文件中显示的。您将看到它调用(fileNamed:)初始化程序。

因此,请更改这一行:

代码语言:javascript
复制
self.view?.presentScene(GameScene(), transition: SKTransition.reveal(with: .up, duration: 0.3))

代码语言:javascript
复制
self.view?.presentScene(GameScene(fileNamed: "GameScene"), transition: SKTransition.reveal(with: .up, duration: 0.3))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46887486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档