在GameScene.swift中从GameViewController.swift更改对象的属性

时间:2016-04-01 14:14:13

标签: ios swift sprite-kit

我是Swift的新手,很抱歉,如果这似乎是一个明显的问题。

我正在尝试用Swift写一个游戏,我在故事板中设计了一个标签和一个播放按钮。

Main.storyboard

我在 GameViewController.swift 文件中添加了对这些对象的引用,如下所示:

// MARK: Objects
@IBOutlet var gameLabel: UILabel!
@IBOutlet var playButton: UIImageView!

// MARK: Actions

@IBAction func playButtonTapped(sender: UITapGestureRecognizer) {
        GameScene().gameStart()
}

这属于GameViewController类:class GameViewController: UIViewController

然而,主游戏本身发生在 GameScene.swift 中。这涉及到我必须在游戏开始时隐藏标签和图像。我不确定如何设置隐藏这些对象的属性,因为如果我在 GameScene.swift 中执行了以下操作:

GameViewController().playButton.hidden = true

......游戏因致命错误而崩溃。错误说明:致命错误:在解包可选值时意外发现nil。

有没有人对此问题有任何建议?任何帮助深表感谢。对不起,如果信息很难理解。

干杯。

1 个答案:

答案 0 :(得分:1)

您正在创建一个新的' GameViewController(), but you want you want use your already existent one. If you only want to create one GameViewController`实例,可能就是这种情况,您可以使用静态实例变量。

GameViewController中,输入:

static var instance: GameViewController!

在其viewDidLoad()中,放置:

GameViewController.instance = self

最后,在GameScene中,使用GameViewController()切换GameViewController.instance