2017-04-06 43 views
0

我寫了一個類:SceneKit斯威夫特3繼承不起作用

import UIKit 
import SceneKit 

class Scene: SCNScene { 

var _sceneView: SCNView! 
var cameraNode: SCNNode! 

func setupView(view: SCNView) { 

    _sceneView = view 

    } 
} 

但是,當我打電話給那個類的功能GameViewController:

import UIKit 
import QuartzCore 
import SceneKit 
import SpriteKit 

class GameViewController: UIViewController, SCNSceneRendererDelegate { 

var scene: Scene?      = nil 

override func viewDidLoad() { 

super.viewDidLoad() 

    //Super 
    super.viewDidLoad() 

    scene = Scene() 

    let sceneView = self.view as! SCNView 

    ... 

    sceneView.scene = scene?.setupView(view: sceneView) 
    } 
} 

它顯示錯誤:

無法指定'()?'類型的值鍵入'SCNScene?'

當我試圖調用功能,它劃掉的功能:

crossed-out function

請解釋,並幫助解決這個問題。

在此先感謝。

+0

函數'setupView(view:)'返回'Void'。所以你試圖做'sceneView.scene = Void',這沒有任何意義。 –

回答

0

忽略其他潛在問題(除非絕對需要強制展開(!)),下劃線變量名稱是Objective-C ivars的慣例,有時用於命名私有存儲以用於快速類),您可能會想要的是沿線的東西:

//: Playground - noun: a place where people can play 

import UIKit 
import SceneKit 
import QuartzCore 
import SpriteKit 

class Scene: SCNScene { 

    var _sceneView: SCNView! 
    var cameraNode: SCNNode! 

    func setupView(view: SCNView) { 

     _sceneView = view 

    } 
} 

class GameViewController: UIViewController, SCNSceneRendererDelegate { 

    var scene: Scene? = nil 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let scene = Scene() 

     let sceneView = self.view as! SCNView 
     scene.setupView(view: sceneView) 
     sceneView.scene = scene 

     self.scene = scene 
    } 
}