我有一个问题,我知道问题是什么,但我不知道如何解决它。我在我的 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() })