【发布时间】:2017-11-08 01:22:30
【问题描述】:
下面复制相关代码,我也在Github上放了一个简单的测试项目来演示这种情况:
https://github.com/prinomen/viewPresentSceneTest
我有一个GameViewController 和一个GameScene 课程。我尝试使用SKScene(fileNamed: "GameScene") 设置场景,但该调用不起作用,因为场景没有出现并且该行之后的打印语句没有被调用。
我知道我可以使用不同的方式来设置场景,如下所示:
let scene = GameScene()
但我正在尝试理解 SpriteKit,但下面的代码不起作用,这让我很困扰。在另一个项目中,我能够使用SKScene(fileNamed: "GameScene") 成功设置场景,如下面的代码所示。
有谁知道为什么它在这个项目中不起作用?
GameViewController.swift
import SpriteKit
class GameViewController: UIViewController {
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if let view = self.view as! SKView? {
// Load the SKScene from 'GameScene.sks'
if let scene = SKScene(fileNamed: "GameScene") {
print("SKScene was set")
// Set the scale mode fit the window:
scene.scaleMode = .aspectFill
// Size our scene to fit the view exactly:
scene.size = view.bounds.size
// Show the new scene:
view.presentScene(scene)
}
}
}
}
GameScene.swift
import SpriteKit
class GameScene: SKScene {
override func didMove(to view: SKView) {
self.anchorPoint = CGPoint(x: 0.5, y: 0.5)
let logoText = SKLabelNode(fontNamed: "AvenirNext-Heavy")
logoText.text = "Game Scene"
logoText.position = CGPoint(x: 0, y: 100)
logoText.fontSize = 60
self.addChild(logoText)
}
}
【问题讨论】:
-
食堂的回答解决了这个问题。为了修复我的项目,我创建了一个新的 GameScene.sks 文件,并在其自定义类检查器中的自定义类字段中输入了
GameScene。
标签: ios swift sprite-kit viewcontroller skscene