Using SpriteKit inside SwiftUI

后端 未结 5 1419
说谎
说谎 2020-12-15 07:52

I am having an issue when creating a SpriteKit scene within SwiftUI. I created this project initially as a SwiftUI project.

Her

5条回答
  •  萌比男神i
    2020-12-15 08:06

    Here's a SpriteKit container View which can be used this way:

    SpriteKitContainer(sceneName: "MainScene")

    struct SpriteKitContainer : UIViewRepresentable {
    
        let sceneName: String
    
        class Coordinator: NSObject {
            var scene: SKScene?
        }
    
        func makeCoordinator() -> Coordinator {
            return Coordinator()
        }
    
        func makeUIView(context: Context) -> SKView {
            let view = SKView(frame: .zero)
            view.preferredFramesPerSecond = 60
            view.showsFPS = true
            view.showsNodeCount = true
    
           //load SpriteKit Scene
           guard let aScene = SKScene(fileNamed: sceneName)
           else {
                view.backgroundColor = UIColor.red
                return view
           }
           aScene.scaleMode = .resizeFill
           context.coordinator.scene = aScene
           return view
        }
    
    
        func updateUIView(_ view: SKView, context: Context) {
           view.presentScene(context.coordinator.scene)
        }
    
    }
    #if DEBUG
    struct ContentView_Previews : PreviewProvider {
    
       static var previews: some View {
    
          // Replace "MainScene" with your SpriteKit scene file name
          SpriteKitContainer(sceneName: "MainScene")
             .edgesIgnoringSafeArea(.all)
             .previewLayout(.sizeThatFits)
          }
    }
    #endif
    

提交回复
热议问题