swift - 保存sknodes数组

标签 swift sprite-kit sknode

我有一个函数可以保存场景中的所有节点,并且可以将它们添加回来(这些在应用程序打开时运行良好)。我遇到的问题是如何保存该数组,以便在应用程序重新打开时可以调用它。预先感谢您的帮助。

为我的节点添加了代码,以便更好地了解我想要完成的任务

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/

相关文章:

ios - 在单 View 应用程序中启动场景

ios - SKSpriteKitNode 的旋转与 GKAgent2D 的旋转不匹配

ios - 如何将 SFSafariViewController 与 SwiftUI 一起使用?

swift - 变量未间歇性设置

ios - swift :让相机跟随玩家跳跃

ios - SKPhysicsWorld 在缩放节点中模拟物理

ios - Sprite 套件 | swift 3 |将关卡编辑器中的 SKSpritenode 分配给 SKNode

swift - 核心数据只返回一个对象而不是所有对象

ios - 运行 Apple 的默认操作扩展代码会引发异常或不执行任何操作

iphone - 如何从 SKScene 中执行 segue?