我试图将使用目标C制作的游戏移植到swift。我已经初始化了一个场景,但每当我将视图控制器的视图对象分配给SKView常量时,我都会遇到错误的访问错误。
导致错误的行如下:
let skView = self.view as SKView
这里有一些上下文代码:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
// Configure the view.
/* Pick a size for the scene */
let scene = GameplayScene(size: self.view.bounds.size, colored: false)
// Configure the view.
println("view: \(self.view.description)")
let skView: SKView = self.view as SKView
skView.showsFPS = true
skView.showsNodeCount = true
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
当我打印视图对象时,我在控制台中获取信息(内存地址等)。我已经尝试将此代码放在不同的方法中,例如viewDidLoad等,但每次都是相同的结果。我在我的计划中启用了僵尸,但没有找到任何东西(从我能说的,没有真正发生过)。我的游戏是风景游戏,如果它有所作为。任何人都知道可能导致这个麻烦错误的原因是什么?我已经设置了多个断点,场景初始化正常,println被调用,然后在视图设置时正确崩溃
答案 0 :(得分:0)
在发布这个问题后大约2分钟就知道了。在我的测试项目中记录视图后,我注意到它甚至在self.view之前已经是SKView类型的SKView线。所以我检查了viewController中的视图,确定它的类是SKView。
将我的实际游戏视图控制器中的视图从UIView更改为SKView后,它运行正常。这是一个简单的修复,但很难调试。