29-11-2019, 08:47 AM
(This post was last modified: 29-11-2019, 08:55 AM by josemendez.)
(29-11-2019, 01:09 AM)ibbybn Wrote: Opening scene 'Assets/Obi/Samples/Cloth/CharacterCloth.unity'
Serialization depth limit 7 exceeded at 'Obi::ObiConstraints`1.actor'. There may be an object composition cycle in one or more of your serialized classes.
Serialization hierarchy:
8: Obi::ObiConstraints`1.actor
7: Obi::ObiConstraints`1.source
6: Obi::ObiConstraints`1.source
5: Obi::ObiConstraints`1.source
4: Obi::ObiConstraints`1.source
3: Obi::ObiConstraints`1.source
2: Obi::ObiConstraints`1.source
1: Obi::ObiConstraints`1.source
Reproduced. Seems like a bug in Unity's serialization system introduced in 2020, and a pretty serious one. "source" is a protected, generic variable, so it shouldn't be serialized. As far as I know, serialization does not support generics and moreover, only public fields (or those marked with the SerializeField attribute) are serialized. So I don't know why the heck is it complaining of a composition cycle (which I'm full aware is a big no-no because it causes an infinite recursive loop that they cap at a given depth), if the field is not marked for, and in fact cannot be, serialized.
Try placing a [NonSerialized] attribute in front of it (ObiConstraints.cs, line 33), see if this gives Unity a hint that this thing should not be serialized. Didn't work for me, but it's the only thing I can think of. Will send a bug report to them.