每当UISegmentedControl更改索引并且我的函数正在运行时,我都试图更改场景,但是场景没有改变。我所有的场景都继承了此函数所在的类,我想知道这是否是问题,我将如何解决呢?

这是我的代码:

func valueChanged(){
    run(tapSound)
    let sceneto = scenes[segment.selectedSegmentIndex]
    let trans = SKTransition.fade(with: .white, duration: 1.5)
    if self == sceneto as! SKScene{
        print("na")
        return
    }

    view?.presentScene(sceneto as! SKScene, transition: trans)

}


每次单击控制器时,该功能都会运行,并且场景甚至在第一次运行时都会更改,但第一次后不会更改。它只是在第一次运行后就不会改变场景,并且它不会打印“ na”,所以我想知道问题是什么

最佳答案

如果它不显示“ na”,则必须表示self !== sceneto as! SKScene。如果sceneto不是SKScene,这将导致崩溃(因为使用的是as!而不是as?)。

如果view?.presentScene(sceneto as! SKScene, transition: trans)不执行任何操作(不崩溃,不过渡到错误的场景,但不执行任何操作),则表明view?实际上是nil

来自SKScene类参考(https://developer.apple.com/reference/spritekit/skscene/1519726-view


  要呈现场景,请调用presentScene(:)方法或
  SKView类上的presentScene(:transition :)方法。如果现场
  当前不显示,此属性为nil。


您可以在presentScene之前添加print(“(view)”)吗?

07-24 09:44
查看更多