Quantcast
Channel: Questions in topic: "parenting"
Viewing all articles
Browse latest Browse all 302

Another another "Setting the parent of a transform which resides in a prefab" problem, now with "Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)"

$
0
0
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?

Viewing all articles
Browse latest Browse all 302

Trending Articles