gpt4 book ai didi

swift - 为什么我的场景在 swift sprite kit 中不会改变?

转载 作者:行者123 更新时间:2023-11-30 12:29:37 26 4
gpt4 key购买 nike

每当 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)

}

每次单击 Controller 时,该函数都会运行,并且场景甚至会在第一次运行时发生变化,但在第一次运行后不会发生变化。它只是在第一次运行后不会改变场景,而且它不会打印“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 )

To present a scene, you call the presentScene(:) method or presentScene(:transition:) method on the SKView class. If the scene is not currently presented, this property holds nil.

你能在 presentScene 之前添加 print("(view)") 吗?

关于swift - 为什么我的场景在 swift sprite kit 中不会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43729686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com