我有一个函数可以保存场景中的所有节点,并且可以将它们添加回来(这些在应用程序打开时运行良好)。我遇到的问题是如何保存该数组,以便在应用程序重新打开时可以调用它。预先感谢您的帮助。
为我的节点添加了代码,以便更好地了解我想要完成的任务
let bubble = SKShapeNode(circleOfRadius: self.frame.size.width / 12)
bubble.position = testBubble.position
bubble.fillColor = SKColor.black
bubble.strokeColor = SKColor.black
bubble.name = "bubble"
bubble.physicsBody = SKPhysicsBody(circleOfRadius: bubble.frame.height / 2)
bubble.zPosition = 2
let bubbleLabel = SKLabelNode(text: "Bubble")
bubbleLabel.fontColor = UIColor.darkGray
bubbleLabel.fontSize = 10
bubbleLabel.fontName = "MarkerFelt-Thin"
bubbleLabel.position.y = bubble.frame.size.width / 2 -bubble.frame.size.height / 1.65
bubbleLabel.zPosition = 3
self.addChild(bubble)
bubble.addChild(bubbleLabel)
@objc func saveAllNodes() {
nodeArray.removeAll()
for node in self.children {
nodeArray.append(node)
}
}
@objc func addAllNodes() {
self.removeAllChildren()
for node in nodeArray {
self.addChild(node)
}
}
最佳答案
您可能正在考虑使用 CoreData 或 UserDefaults。并在应用程序进入前台时在 AppDelegate 中加载节点,或者在您需要的任何地方的 viewdidload 函数中(可能更好)加载节点。
您可以在 xdatamodel 中为 NodeArray 使用可转换对象并将其声明为 @NSManaged var [NodeArray]
关于swift - 保存sknodes数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477947/