2017-09-24 8 views
0

今私はSpriteNode(そしてノードのすべての子供たち)を 'disk'に保存する方法を見つけようとインターネットをトロールしているので、GameSceneを終了してから戻って、スプライトはまさに私がそれらを去った方法です。SwiftのSKSpriteNodeを保存/アーカイブする

私は、シーン全体をアーカイブするためにただ一つのノード(およびそれが持っている多くの子供たち)私はSpriteKitベースとスウィフトで働く

を必要としません。

誰でもチュートリアルやこれを行う方法について説明するドキュメントを教えてください。

ご協力いただきありがとうございます。

について アダム。

答えて

1

SKSpriteNodeは非常に複雑なオブジェクトです。全体を保管するのは大変なトラブルです。それは多くのプロパティを持っていることを忘れないでください。physicsBodyのようないくつかのプロパティはサブプロパティを持っています。

だから、ノード全体を格納するのではなく、ノードを完全に表現できる情報を格納することです。たとえば、変更可能なノード内の唯一のものがその色である場合、その色を保存するだけです。ノードを再作成する場合は、ノードを正常に再作成し、保存した色を読み取り、設定します。

結局、あなたはStringIntBoolArrayDictionaryなど

以来のようなプロパティリストで見つかった値の型のみを含むオブジェクトは、ある「プロパティリスト」、で終わる必要がありますあなたは正確なシナリオについて言及していませんでした。私はただの例を行います:

class SpriteInfo { 
    let positionX: Double 
    let positionY: Double 
    let subnodes: [SpriteInfo] 

    // init here... 
} 

上記はプロパティリストタイプです。これをUserDefaultsに保存することができます。

+0

おかげさまで、私のノードには子としての他の何百ものノードがあります。サイズ、形状、x/yの位置、前のノードの相対的な角度、その他いくつかの詳細を保存する必要があります。コード化可能なコードや何らかのエンコーディングを使ってすべてを単純にアーカイブする方法はありませんか?私はツリー全体を再描画することは可能だと思いますが、それを行うには苦痛な方法のようです... – Adam

+0

コード化を使用することはOKですが、それらのプロパティをすべてエンコードする必要があります。スプライトノードの状態全体を保存することは自明ではありません。たぶんあなたは間違って問題に近づいています。 @アダム – Sweeper

関連する問題