每当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)”)吗?