【问题标题】:Nothing Shows up on scene in SpriteKitSpriteKit 中的场景中没有任何显示
【发布时间】:2016-12-01 06:38:13
【问题描述】:

我想在 Xcode 7.2 中创建一个游戏。我想创建一个信息屏幕,里面会有一些标签。但是在新创建的场景中什么也没有出现。无论我在新场景中添加什么,例如图像、精灵、标签。当我运行它时,屏幕上什么也没有出现。但是我为创建标签而编写的代码在游戏最初包含的“GameScene”中运行良好。

我在 InfoScene 中的代码如下:

import SpriteKit

class InfoScene: SKScene {

override func didMoveToView(view: SKView) {
  let thanksLabel = SKLabelNode(fontNamed:"Arial")

  thanksLabel.text = "Thank you for Playing!"

  thanksLabel.fontSize = 45

  thanksLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))

  self.addChild(thanksLabel)
}

}

在我看来没有什么不对。如果我将上面的代码放在模板原来的 GameScene 中,它们的标签就会出现。此外,如果我在场景中添加精灵,它也不会显示出来。这真的让我很困惑。

【问题讨论】:

  • 我建议你发布实例化和呈现InfoScene的代码

标签: ios swift sprite-kit


【解决方案1】:

我认为您只是忘记将代码放入实例方法中,例如:

Swift 2.x

override func didMoveToView(view: SKView) {
  // put your stuff here
}

Swift 3.x:

override func didMove(to view: SKView){
  // put your stuff here
}

didMove 在视图呈现场景后立即调用。根据实际文档,您可能会使用此方法来创建场景的内容。


更新:(在您的更正和评论之后):

我认为InfoScene 出于某种原因没有启动。 确保您的InfoScene 是使用didMoveToView 内的断点启动的,或者只是在您的行之间添加这一行:

print("∙ \(type(of: self))")

【讨论】:

  • 对不起,我发布了错误的代码...我实际上使用了 didMoveToView 方法。但场景中仍然没有任何东西。
【解决方案2】:

您确定您正在使用您的InfoScene 课程吗?你是如何制作这个实例的?通过 SKS 文件?如果是这样,您需要将自定义类字段更改为指向您的InfoScene,默认情况下它将转到SKScene

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多