我覺得這裏有一點點混亂在UIKit和SpriteKit之間。
A ViewController
沒有會員addChild
,我想你會說一下SKNode
的對象。
在SpriteKit,如果你想顯示SKNode
元素或繼承SKNode
的對象,首先你要拋棄你的觀點作爲SKView
然後實例化和呈現SKScene
,例如在解釋說,「你好世界」項目:
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
// Load the SKScene from 'GameScene.sks'
if let scene = SKScene(fileNamed: "GameScene") {
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
// Present the scene
view.presentScene(scene)
}
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
}
}
}
class GameScene: SKScene {
override func didMove(to view: SKView) {
print("This is my GameScene, here I could show my SKLabelNode")
}
}
此外,在SpriteKit你沒有需要改變的viewController,以顯示你的元素,你可以提出一個新的SKScene
或直接在顯示SKNode
爲了幫助你瞭解你的函數,你也可以這樣做:
func showMessage(message: String, color: UIColor,pos:CGPoint)->SKLabelNode{
let messageLabel = SKLabelNode(fontNamed: "Verdana")
messageLabel.text = message
messageLabel.fontSize = 15
messageLabel.fontColor = color
return messageLabel
}
使用:
let messagePos = CGPoint(x: self.size.width/2, y: self.size.height/2)
let messageLabel = showMessage(message:"Test Message", color: UIColor.green, pos:messagePos)
self.addChild(messageLabel)
'StartViewController()'正在初始化一個新的'StartViewController'然後調用該方法。你需要引用你當前的'StartViewController'。 – Caleb
@Caleb感謝您的回答!我可以問你我該怎麼做?我無法在Google上找到關於此的教程。 –
@stefffeyens您好steff,您可以在XCode 8 - File - New - Project(選項卡應用程序)中找到一個有用的項目,然後選擇Game。在這裏你可以看到一個帶有'Hello world'標籤的SpriteKit演示。希望它能幫助你。 –