从 SKS 文件加载节点时使用的初始化程序

Posted

技术标签:

【中文标题】从 SKS 文件加载节点时使用的初始化程序【英文标题】:Initializer used when loading nodes from SKS file 【发布时间】:2016-06-29 17:02:37 【问题描述】:

我正在创建SKSpriteNode 的子类,例如Player 并在我的 *.sks 文件中使用自定义类 Player 标记 SKSpriteNode。在 *.swift 中,我正在使用:self.childNode(withName: "myNodesName") 加载节点。好吧,这很好用,但我还想修改用于此过程的构造函数。

如果我从 *.sks 访问 *.swift 文件中的 SKSpriteNode,则使用 SKSpriteNode 的哪个构造函数

self.childNode(withName: "myNodesName") as? Player

?

【问题讨论】:

【参考方案1】:

调用了什么构造函数?

从 sks 文件创建节点时,SpriteKit 确实使用此初始化程序

init?(coder aDecoder: NSCoder)

如何在 Player 中实现它?

你有一个 Player 类。你可以这样实现构造函数

class Player: SKSpriteNode 
    required init?(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
    

【讨论】:

调用什么实例? 它被某种解析器(我相信)调用,负责将 SKS 文件转换为 SKScene。 所以可能没有办法改变它? @cocoseis:你需要做什么? 我希望播放器在初始化时知道​​它的兄弟(节点)。

以上是关于从 SKS 文件加载节点时使用的初始化程序的主要内容,如果未能解决你的问题,请参考以下文章

如何从嵌入工作区的 Swift Playground 加载 .sks 文件?

SKSpriteNode 在 init(NSCoder) 中设置颜色

使用 loadNibNamed 加载视图时,如何在 UIView 上调用便利初始化程序?

将发射器节点添加到 sks 文件并使用它 - XCode 6.0 + swift

Xcode 9:SKEditorReference不允许动画?

使用 Spring Data MongoDB 在应用程序启动时加载初始数据