SKScene сделал перемещение (для просмотра) необъяснимым образом дважды

#swiftui #skscene #skview #spriteview

Вопрос:

Я надеюсь, что кто-нибудь сможет сказать мне, почему это происходит и как это исправить. В представлении содержимого SwiftUI я использую 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()
    }
 

Инструкция print сообщает мне, что didMove(для просмотра) вызывается дважды, и это приводит к очень короткой вспышке на экране. В остальном все идет нормально.
Есть ли очевидная проблема с тем, как я называю SKScene? Или мне следует искать причину в другом месте? Спасибо.