首页 > 解决方案 > 如何解决 Swift Playgrounds 中的“运行此页面时出现问题”消息?

问题描述

我正在尝试使用 SceneKit 为 WWDC 学生挑战赛制作一些东西,这要求我的项目位于 Swift 操场上。我不断收到“运行此页面时出现问题”的消息。它不提供错误消息。它只是建议检查我的代码或重新开始。我曾尝试单独删除代码片段,但我无法找到此问题的根源。我还尝试在 man Xcode playground 中运行它,它提供了警告,我引用了“操场无法继续运行,因为操场源代码已经运行”。我被困住了。我的代码有什么问题。

import UIKit
import SceneKit
import QuartzCore 
import PlaygroundSupport

class GameScene: UIViewController, SCNSceneRendererDelegate {
    var primaryView: SCNView!
    var primaryScene: SCNScene!
    var cameraNode: SCNNode!
    
    override func viewDidLoad() {
        sceneAndViewInit()
        cameraInit()
        createGround()
        moonInit()
    }
    
    func createGround() {
        var ground = SCNBox(width: 200, height: 1, length: 200, chamferRadius: 0)
        var groundPhysicsShape = SCNPhysicsShape(geometry: ground, options: nil) 
        var groundNode = SCNNode(geometry: ground)
        ground.firstMaterial?.diffuse.contents = UIColor.orange
        ground.firstMaterial?.specular.contents = UIColor.white
        groundNode.position = SCNVector3(0, -6, 0)
        groundNode.physicsBody = SCNPhysicsBody(type: .static, shape: groundPhysicsShape)
        primaryScene.rootNode.addChildNode(groundNode)
    }
    
    func sceneAndViewInit() {
        primaryView = SCNView(frame: CGRect(x: 0, y: 0, width: 500, height: 300))
        primaryView.allowsCameraControl = true
        primaryView.autoenablesDefaultLighting = true
        
        primaryScene = SCNScene()
        
        primaryView.scene = primaryScene
        primaryView.isPlaying = true
    }
    
    func cameraInit() {
        var cameraNode = SCNNode()
        cameraNode.camera = SCNCamera()
        cameraNode.position = SCNVector3(x: 0, y: 0, z: 2)
        cameraNode.camera?.fieldOfView = 65
        cameraNode.camera?.wantsHDR = false
        primaryScene.rootNode.addChildNode(cameraNode)
    }
    
    func moonInit() {
        let moonScene = SCNScene(named: "Moon.scn")
        var moonNode = moonScene?.rootNode.childNode(withName: "Sphere", recursively: true)
        var moonPhysicsShape = SCNPhysicsShape(node: moonNode!, options: nil)
        moonNode?.position = SCNVector3(0, 0, 0)
        moonNode?.scale = SCNVector3(1, 1, 1)
        moonNode?.name = "Moon"
        moonNode?.physicsBody = SCNPhysicsBody(type: .static, shape: moonPhysicsShape)
        primaryScene.rootNode.addChildNode(moonNode!)
    }
    
    func renderer(_ aRenderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
        print(time)
    }
}

let gameScene = GameScene()
PlaygroundPage.current.liveView = gameScene

(“Moon.scn”是我在资源/文件部分中的一个文件以及它的纹理,我仍然遇到没有任何与月球相关的代码的问题。)

标签: swiftscenekitswift-playground

解决方案


要查看完整的错误消息,请转到设置应用程序 -> Playgrounds -> 打开创作调试模式。这并不能直接解决问题,但对于定位错误更有帮助。

设置应用程序->游乐场->打开创作调试模式


推荐阅读