The other questions about this error don't seem to be caused by the situation that I will show. I'm on Unity 5.3.4.
I have two prefabs, **Parent** and **Child**. **Child** is an empty GameObject (has just Transform component). **Parent** has the following script:
using UnityEngine;
public class TestParenting : MonoBehaviour {
public GameObject prefab;
public int dummy;
private void OnValidate() {
Debug.Log("validate testparenting. childs found: " + GetComponentsInChildren(true).Length);
UpdateChild();
}
private void UpdateChild() {
// GetComponentsInChildren also returns the Transform in the parent
if (GetComponentsInChildren(true).Length < 2)
NewChild();
}
private void NewChild() {
GameObject instance = Instantiate(prefab);
instance.name = "child";
instance.transform.SetParent(transform);
}
}
The expected behaviour is that **Parent** always have to have a **Child**, which is an instance of the **Child** prefab attached to the script in Editor, and checked in *OnValidate*. *OnValidate* is executed as a Unity event when any change occurs in the editor for the script, and in deserialization (not precisely sure about the moment in this last case).
I get the error when I hit the play button in Editor and **Parent** has no **Child** yet (and in other situations related to prefab modification). When I hit play and I get the error, I also get *"Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)"*.
I think it is a prefab serialization issue, but can't fix it.
What can I do to get rid of this error?
↧