Xcode SwiftUI SceneKit?
Hey,
ich versuche momentan ein MacOS Spiel mit Xcode in SwiftUI zu erstellen, ich habe jedoch noch keinen weg gefunden das zu verwirklichen. Momentan Versuche ich eine Class mit Keydown events und eine SCNScene in eine gemeinsame SceneView zu bringen aber es scheint nicht zu funktionieren, wäre für jede Hilfe dankbar.
import SwiftUI
import SceneKit
// Mouse/Tap Recogniser
class GameScene: SCNScene {
func mouseDown(with event: NSEvent) {}
func mouseDragged(with event: NSEvent) {}
func mouseUp(with event: NSEvent) {}
func keyDown(with event: NSEvent) {
switch event.keyCode {
default:
print("keyDown: \(event.characters!) keyCode: \(event.keyCode)")
}
}
}
struct ContentView: View {
//SceneNodes
var scene = SCNScene(named: "scene.scn")
var cameraNode:SCNNode? {
scene?.rootNode.childNode(withName: "camera", recursively: true)
}
//Main View Body
var body: some View {
SceneView(scene: GameScene(),
pointOfView: cameraNode,
options: []
)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
![](https://images.gutefrage.net/media/user/Babelfish/1600521171320_nmmslarge__47_47_690_690_7a344d30a971c61ba08b6baba08a321b.png?v=1600521171000)
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Programmieren & Softwareentwicklung, Software & Apps
Mit SceneKit habe ich noch nichts gemacht und kann nichts dazu sagen. An deinem Code fällt aber auf, dass du in der ContentView am Anfang scene = SCNScene(named: "scene.scn") definierst, dass aber scene nirgendwo mehr nutzt und deiner SceneView stattdessen GameScene() übergibst. Die SCNScene wird also nirgendwo verwendet.
Woher ich das weiß:Berufserfahrung – Entwickle Anwendungen für iOS, iPadOS und macOS beruflich.
![](https://images.gutefrage.net/media/user/Babelfish/1600521171320_nmmslarge__47_47_690_690_7a344d30a971c61ba08b6baba08a321b.png?v=1600521171000)
Babelfish
06.07.2021, 18:05
@2Swift4Ducks
Na du musst ja auch deiner abgeleiteten Klasse die Szene mit übergeben:
var body: some View {
SceneView(scene: GameScene(named: "scene.scn"),
pointOfView: cameraNode,
options: []
)
}
![](https://images.gutefrage.net/media/user/2Swift4Ducks/1620076813095_nmmslarge__0_0_400_400_a7448469a17c2ce8ed07251058ff274b.png?v=1620076813000)
Ja also das ist nur eine Variation die Ich genutzt habe, ich habe auch schon anstelle von GameScene() einfach die scene variable genutzt und dann wurd mir auch alles angezeigt, aber die KeyEvents fehlen dann. Naja trotzdem danke fürs antworten.