关联的ViewController是自动生成的默认值,并在GameScene对象上调用presentScene。我可以证明SKAction.run闭包运行,但SKLabelNode永远不会出现。黑屏。
BTW,由于与更复杂的项目相关的原因,我们想学习如何以编程方式创建SKScene,而不是使用Nib。这个测试项目没有Nib。import SpriteKit
class GameScene: SKScene {
var label : SKLabelNode?
var mouseLife = 30
override func didMove(to view: SKView) {
label = SKLabelNode(text: "30")
label?.alpha = 1.0
label?.position = CGPoint(x: size.width / 2, y: size.height / 2)
label?.fontSize = 10
label?.color = NSColor.red
scene?.addChild(label!)
let wait = SKAction.wait(forDuration: 1)
let tick = SKAction.run {
self.mouseLife = self.mouseLife - 1
self.label!.text = String(self.mouseLife)
print("tick action ran")
}
let action = SKAction.sequence([wait, tick])
let forever = SKAction.repeatForever(action)
label!.run(forever)
}
}
答案 0 :(得分:0)
谢谢,流动性,您的评论有助于指出我正确的方向,并导致正确的实验。
事实上,错误甚至比这更糟糕:我的GameScene实例在初始化时没有给出大小,因此它默认为零。在实践中,这意味着整个显示器是一个逻辑像素,根据文本是否恰好覆盖(0,0)点,它可以是白色或黑色。
一旦问题得到解决,我们很快就可以围绕一个合适的锚点进行组织。