【问题标题】:Why doesn't this SpriteKit program draw anything?为什么这个 SpriteKit 程序不绘制任何东西?
【发布时间】:2017-12-20 03:13:47
【问题描述】:

关联的 ViewController 是自动生成的默认值,并在 GameScene 对象上调用 presentScene。我可以证明 SKAction.run 闭包运行,但 SKLabelNode 从未出现。黑屏。

顺便说一句,由于与更复杂的项目有关的原因,我们想学习如何以编程方式创建 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.5,0.5) 所以你的标签在右上角
  • nib (SKSEditor) 场景的默认锚点是 0.5 0.5... 你所做的将有 .zero 的锚点

标签: swift macos sprite-kit


【解决方案1】:

谢谢,Fluidity,您的评论有助于为我指明正确的方向,并让我完成正确的实验。

事实上,错误比这更严重:我的 GameScene 实例在初始化时没有被指定大小,所以它的大小默认为零。在实践中,这意味着整个显示是一个逻辑像素,根据文本是否恰好覆盖 (0, 0) 点,它是白色还是黑色。

一旦解决了这个问题,我们很快就能够围绕适当的锚点进行组织。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-06
    • 2019-05-18
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    相关资源
    最近更新 更多