如何解决SKScene didMove查看莫名跑了两次
我希望有人能告诉我为什么会发生这种情况以及如何解决。在 SwiftUI ContentView 中,我使用 SpriteView() 来呈现 SKScene。
struct ContentView: View {
@Environment(\.presentationMode) var presentationMode
@EnvironmentObject var appData : AppData
@Observedobject var viewmodel = viewmodel()
var gameScene: SKScene {
let scene = GameScene(size: CGSize(width: UIScreen.main.bounds.width,height: UIScreen.main.bounds.height))
scene.viewmodel = self.viewmodel
scene.scaleMode = .aspectFill
return scene
}
var summaryScene: SKScene {
let scene = SummaryScene(size: CGSize(width: UIScreen.main.bounds.width,height: UIScreen.main.bounds.height))
scene.viewmodel = self.viewmodel
scene.scaleMode = .aspectFill
return scene
}
var body: some View {
ZStack{
GeometryReader { geometry in
SpriteView( scene: chooseScene(for: viewmodel.complete))
.frame(width: geometry.size.width,height: geometry.size.height)
}
.edgesIgnoringSafeArea(.all)
vstack{
...
}
}
}
func chooseScene(for complete: Bool) -> {
complete ? summaryScene : gameScene
}
GameScene中的相关代码如下:
class GameScene: SKScene {
...
override func didMove(to view: SKView) {
print("did move to view")
backgroundColor = UIColor(red: 30 / 255,green: 32 / 255,blue: 53 / 255,alpha: 1.0)
layoutScene()
startCounter()
}
打印语句告诉我 didMove(to view) 被调用了两次,它导致屏幕上非常短暂的闪烁。否则,事情运行正常。 我调用 SKScene 的方式有明显的问题吗?还是我应该到别处寻找原因?谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。