AddReferencedSubassets( HashSet <Object> referencedSubassets, Object[] allSubassets, Object asset) { if (asset == null) { return; } if (!allSubassets.Contains(asset)) { return; } if (!referencedSubassets.Add(asset)) { return; } var serializedObject = new SerializedObject(asset); var children = serializedObject.EnumerateChildProperties(); foreach (var child in children) { AddReferencedSubassets( referencedSubassets, allSubassets, child); } }