I’m new to unity but I can’t find a solution to this on any forums that help me.
In a script in my Controller GameObject, I want to destroy all instantiated prefab clones, but everything I could find was not permitted to avoid data loss. When I changed Destroy()
to DestroyImmediate()
to make the game run, it just ruined all my prefabs when I tried it out, and now they are completely empty and impossible to edit/delete.
If using DestroyImmediate() ruined your prefabs then you called DestroyImmediate on the prefab itself and not the instantiated gameObject. For example if you had this :
public GameObject MyPrefab;
which is a prefab dragged onto the inspector then called :
DestroyImmediate(MyPrefab);
it would indeed do just that. What you need to do is this :
GameObject obj = Instantiate(MyPrefab);
...
...
Destroy(obj); //note obj NOT MyPrefab