【问题标题】:Init subclass of SKSpriteNode using .sks file Xcode 8使用 .sks 文件 Xcode 8 初始化 SKSpriteNode 的子类
【发布时间】:2016-09-17 19:54:29
【问题描述】:

在我的 GameScene.sks 中,我有一个代表“球”的 SKSpriteNode。

我需要将 SKSpriteNode 子类化为 Ball:

class Ball:SKSpriteNode {
    //custom init
} 

在我的场景中,我想使用 .sks 中的 SKSpriteNode 初始化我的 Ball。

当我使用 Xcode 8 时,我尝试在我的 SKSpriteNode 中使用自定义类:

self.ball = self.childNode(withName: "ball") as! Ball

但是我的应用程序在这一行崩溃了... 另外我不确定如何为我的子类创建自定义初始化程序。

仅供参考,我宁愿避免出现以下情况:

class Ball:SKNode {
    var sprite:SKSpriteNode!
}

let ball = Ball()
ball.sprite = self.childNode(withName: "ball") as? SKSpriteNode

【问题讨论】:

  • 为什么要将Ball 转换为Puck
  • @appzYourLife 只是一个错误 :)
  • 这是一个很好的例子,A​​pple 没有解释如何从 SpriteKit 场景编辑器中获取一些东西到代码中,然后从那里开始使用它。场景编辑器和代码存在于两个不同的世界中,它们之间的桥梁是由理解的人无法解释的麻线构成的。

标签: swift sprite-kit skspritenode skscene


【解决方案1】:

我认为这里的问题是您没有为在场景编辑器中添加的精灵指定名称。

您可以检索您的精灵搜索类型而不是搜索名称

试试这个

self.ball = self.children.flatMap { $0 as? Ball }.first!

【讨论】:

  • 我的球在场景编辑器中我的 SKSpriteNode 的属性中被命名为“球”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 2021-12-14
相关资源
最近更新 更多