一段時間以來,我一直在試圖找到一種方法將SpriteNode(以及節點的所有子節點)保存到'disk',所以當我退出GameScene時回來,精靈正是我如何離開他們。在Swift中保存/歸檔SKSpriteNode
我不需要存檔整個場景,只是一個節點(和它有許多孩子)
我SpriteKit和斯威夫特工作。
任何人都可以請教我一個教程或一些文件,說明如何做到這一點?
非常感謝您的幫助!
關於 Adam。
一段時間以來,我一直在試圖找到一種方法將SpriteNode(以及節點的所有子節點)保存到'disk',所以當我退出GameScene時回來,精靈正是我如何離開他們。在Swift中保存/歸檔SKSpriteNode
我不需要存檔整個場景,只是一個節點(和它有許多孩子)
我SpriteKit和斯威夫特工作。
任何人都可以請教我一個教程或一些文件,說明如何做到這一點?
非常感謝您的幫助!
關於 Adam。
SKSpriteNode
是一個非常複雜的對象。存儲整個事情是很麻煩的。不要忘記它有很多屬性,並且一些屬性,如physicsBody
具有子屬性。
所以你想要做的不是存儲整個節點,而是存儲一些可以完全代表節點的信息。例如,如果節點中唯一可以改變的是它的顏色,那麼你只需要存儲它的顏色。當你想重新創建你的節點時,你只需重新創建它,然後讀取你存儲的顏色並設置它。
最後,你需要用一個「屬性列表」,這是隻包含類型的屬性列表中找到的值的對象,像String
,Int
,Bool
,Array
,Dictionary
等
由於落得你沒有提到確切的情況,我只是做一個例子:
class SpriteInfo {
let positionX: Double
let positionY: Double
let subnodes: [SpriteInfo]
// init here...
}
以上是屬性列表類型。然後,您可以將其存儲在UserDefaults
中。
謝謝你,我的節點有可能有數百個其他節點作爲孩子,我需要保存所有這些節點,包括大小,形狀,x/y位置,相對於前一個節點的角度......以及其他一些細節。是否沒有辦法簡單地使用可編碼或某種編碼對整個事物進行歸檔?我想重繪整個'樹'可能是可能的,但似乎是一個痛苦的方式來做到這一點... – Adam
使用codable是好的,但你仍然必須編碼所有這些屬性。保存一個精靈節點的整個狀態不是微不足道的。也許你錯誤地接近了這個問題。 @亞當 – Sweeper