ユニティシリアライズ

何シリアライズされます

  • シリアライズの団結が団結を開発するのに十分な重量挙げ光の中で役割を果たしている、コア機能の多くは、シリアライズとデシリアライズに基づいて実装されています。簡単に言え直列化は、我々はバイナリデータストレージを節約したい、と私たちは、バイナリファイルを読むために必要がある場合、その後、戻って非直列化ということです。ここでは共通の配列のいくつかの例は以下のとおりです。

    • データストレージは、スクリプト。私たちは、#コード、格納するデータは、我々は、シリアライズされていてもよいC
    • プレハブと初期化。団結の開発プロセスでは、我々はバイナリ形式で保存され、これらのプレハブは、シリアル化される(プレハブ)プリフォームの多くを行います。あなたは、プリフォームを初期化したい場合は、オブジェクトの前ユニティ新しい配列情報に基づいて、オブジェクトに関する情報と、再度、デシリアライズ、クローンは、同様の効果を得ます。
    • 機能的団結では、エディタ、AssetBundleを展開するというように、あなたは数字のシーケンスを見ることができます。
  • 直列化オブジェクト

    • 公共、または[SerializeField]プロパティを持つ、非静的、量は非読み取り専用であり、
    • カスタム非抽象クラスとはSerializable特性を有しています
    • Unity.objectはクラスから継承しました
    • 配列とリスト
    注意:
    • 辞書の属性はSerializableを追加シリアライズすることはできません
    • 基本クラスをシリアル化することができれば、特徴の配列をシリアル化することができない場合であっても追加され
    • 新しい抗連載が新しいオブジェクトであるため、シリアライズは、別の非直列化されたオブジェクトのポインタを保存することはできません、メモリへのポインタは元のオブジェクトではありません
  • シリアライゼーションクラスの団結は、我々は、この基本クラスを継承するとき、我々はインターフェイスをシリアル化するために私たちの団結を呼び出すことができ、はScriptableObjectエディタことができます。使用するインタフェースを表示する公式文書の団結、ここには具体的な説明へのインタフェースの特定の配列。

  • 次の特定Laijiangjiangピット開発プロセスの個人的な出会い

    • まず、開発プロセスの情報部を所定の
    Serialization depth limit 7 exceeded at 'XNodeScripts::ConfigNode.nodeList'. There may be an object composition cycle in one or more of your serialized classes.
    
    Serialization hierarchy:
    8: XNodeScripts::ConfigNode.nodeList
    7: XNodeScripts::ConfigNode.nodeList
    6: XNodeScripts::ConfigNode.nodeList
    5: XNodeScripts::ConfigNode.nodeList
    4: XNodeScripts::ConfigNode.nodeList
    3: XNodeScripts::ConfigNode.nodeList
    2: XNodeScripts::ConfigNode.nodeList
    1: XNodeScripts::ConfigNode.nodeList
    0: XNodeScripts::SelectMsgNode.rootNode

    私はおそらくこれがnodelistとシリアル化されたサイクルでは、データのシーケンスを作成するときにエラーメッセージがnodelistとで、ここで私たちを求めるプロンプトが表示されます。ここでは、団結も7の深さをシリアル化するために私たちを促し見つけます。私は死のそのサイクルの未チェックのシーケンスを残したので、もし非常に大きなシリアル化されたストリームは、システム全体がクラッシュしますときように、私たちのサブシステムは、直列化システムの上に構築されていることを、インターネット上で発見しました。このような事態を避けるために、空のサブセットにユニティ深度しきい値7、および環状配列を使用して7以下です。我々はシリアル化中に作成したときと同様に、オブジェクト自体は、そこに含まれている場合は、非常に一般的な間違いは、内部の私たちのステートメントシリアライゼーションクラスで同様のデータ構造ツリーのシーケンスによって構成され、

    [Serializable]
    public class DepthClass : ScriptableObject
    {
        public List<DepthClass> depthObjects; 
    }

    魅力のこの一連の構造は、それは私のエラーの前に示されたシステムを持っています。実際には、null値のシーケンスを避けるツリー辞書を保存含めるために、私はリストを使用しました 鍵保管、次の子ノード、文字列は、キー値を格納するために使用され、そして、リストなどのすべてのノードに格納されています。だから我々は、我々は、効率の下部を避けるために、ヒープメモリまたは検索するためのより効率的な方法を使用することができ、それを通してキーのノードを見つける必要があります。よりよい解決策のない考えはありません。23333

おすすめ

転載: www.cnblogs.com/fzuljz/p/11168131.html