ios - 如何复制带 child 的 SKNodes

标签 ios swift sprite-kit gameplay-kit

我如何复制一个 SKTileMapNode 或一个包含两个或多个 SKTileMapNodeSKNode

结构是:

  • 背景节点(空)
    • SKTileMapNode
    • SKTileMapNode

我很乐意在场景中执行以下操作:

guard let background = self.childNode(withName: "BackgroundNode") else {
    return
}
background0 = background
background1 = background.copy() 
self.addChild(background1)

这导致不可见的东西。节点已复制,但我仍然看不到任何内容,并且 SKTileMap 的值未正确复制到副本。例如,不应用 tileSize。

我如何设法获得我的 BackgroundNode 的副本?

最佳答案

你应该用你自己的实现覆盖 SKNode 类的copy(with:) 方法,以便能够与 SKNode 的子级一起复制. 但是你可以简单地做这样的事情:

guard let background = self.childNode(withName: "BackgroundNode") else {
    return
}

let backgroundCopy = SKNode()

for child in background.children {
    backgroundCopy.addChild(child)
}
addChild(backgroundCopy)

关于ios - 如何复制带 child 的 SKNodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45015391/

相关文章:

ios - 将数据发送回某个 UITableViewCell

swift - snapkit 不支持 float 类型?

ios - 在 Swift 中将 JSON 转换为模型值

ios - 当我的 tableview 中没有要显示的数据时,如何显示返回消息?

ios - SpriteKit : How to draw custom shapes without SKShapeNode?

ios - SKAction followPath,创建路径

ios - 在 loadView 中设置 UIView 的 backgroundColor 没有效果

ios - 两个 Segue 从一个 View Controller 传递相同的数据

ios - 如何删除 SwiftUI 中列表顶部的空白

ios - Physics Body edges IOS8,Sprite Kit