2020


ツリー構造をシリアライズ化しようとした所、以下のようなエラーメッセージが出てしまいます。

[code]

    Serialization depth limit exceeded at 'Node'. There may be an object composition cycle in one or more of your serialized classes.
    
[/code]

内容的にはシリアライズかする際の深さ制限が無いからダメのようです。 明示的に深さ制限を設けても構わないので、この問題を回避する方法をご存じないでしょうか。

よろしくお願いします。

[code]

    [System.Serializable]
    public class Node {
        public Node[] Children;
    }
    
[/code]


CC BY-SA 3.0
2014-12-18T08:46:46.380
2018
2014-12-19T02:03:16.763
2014-12-19T02:03:16.763
2134
2134
question
unity3d c#
ツリー構造のシリアライズ化


[`NonSerializedAttribute`](http://msdn.microsoft.com/ja-
jp/library/system.nonserializedattribute.aspx) で特定のフィールドをシリアル化対象外にすることが出来ます。

[code]

    [System.Serializable]
    public class Node
    {
        [System.NonSerialized]
        public Node[] Children;
    }
    
[/code]


CC BY-SA 3.0
2014-12-18T09:06:15.880
2019
2014-12-18T09:06:15.880
2432
2018
answer


下記のページの 「私はUnityのシリアライザがサポートしていないオブジェクトをシリアライズしたいです。何をすればいいですか？」
という項目に、ISerializationCallbackReceiverを実装してツリー構造をListへ平坦化してシリアライズさせるソースコードがあるので参考になるかもしれません。

<http://japan.unity3d.com/blog/?p=1630>


CC BY-SA 3.0
2014-12-18T09:15:33.350
2020
2014-12-18T09:15:33.350
4077
2018
answer