我试图在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"所以我想知道问题是什么
答案 0 :(得分:0)
如果它不打印'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 :)方法。如果现场 目前尚未出示,此属性为零。
您可以在presentScene
之前添加打印(“(查看)”)吗?