0

我有一个问题,我知道问题是什么,但我不知道如何解决它。我在我的 SwiftUI 应用程序中使用 SpriteView,但是当视图刷新时,SKScene 也是如此,所以基本上它会重置场景。

我该如何防止这种情况发生?

我尝试将“场景”变量设为静态,但后来我无法使用 scene.gameCenterManager = gameCenterManager。错误“实例成员 'gameCenterManager' 不能用于类型 'GameSceneView'”

我根本不知道如何将它们结合在一起。

下面的代码发生的情况是 SKScene 正确加载,但是当刷新视图(打印出文本或其他任何内容)时,SKScene 会重置。

struct GameSceneView: View {
    
    @EnvironmentObject var gameCenterManager:GameCenterManager
    
    @Environment(\.presentationMode) var presentationMode
    
    var scene: SKScene {
        let scene = GameScene()
        scene.size = CGSize(width: 1000, height: 1800)
        scene.scaleMode = .aspectFill
        scene.gameCenterManager = gameCenterManager
        return scene
    }

    var body: some View {
        
        SpriteView(scene: scene)
            .frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
            .frame(width: 300, height: 400)
            .ignoresSafeArea()
            .edgesIgnoringSafeArea(.all)

    }
}

为了呈现视图,我在 ContentView 中有一个按钮并添加了这个;

        Button("Play Game") {
            self.showingSheet.toggle()
        }
        .buttonStyle(RoundedRectangleButtonStyle() )
        .buttonStyle(ShadowButtonStyle() )
        .fullScreenCover(isPresented: $showingSheet, content: { GameSceneView() })
4

0 回答 0