How to add a script to a parent object and not every individual child object.
I am in the process of making a sandbox game in Unity 5.3.5. Every block is inside of a parent directory and to destroy them, each block has a script assigned to it that deletes the block game object. I tried to assign the the script to the parent directory so that any new blocks placed will have the script affect them, however this did not work. Is there a way to have one script in the parent directory affect all the child objects (even any that are added during gameplay)?
Here is my JavaScript script:
function OnMouseDown() { Destroy(gameObject);
Thank you so much! This really helped and I now have my game working smoothly!
Careful with the Reply button, you'd posted this as an Answer not a comment!
I've converted it to a comment and put my comment as an answer as it appears to have sorted the issue.
Glad it helped :D
Answer by Mmmpies · Jun 08, 2016 at 08:16 AM
So you need the parent script to understand which gameobject you wish to destroy, it's possible but if you click the mouse on any child object do you want ALL children listed in the parent to be destroyed or only certain children?
Well either way fundamentally if you want to record all children in the parent you need to do so as you instantiate. So instantiate like this...
GameObject go = Instantiate (myPrefab, transform.position, Quaternion.identity) as GameObject;
So you instantiate each child but you also have a reference to it in the temporary go GameObject. Obviously go will change as you instantiate each new child so add each to an array of gameObjects. You also need to have a script on each child to record the mouseDown and pass that information back to the parent.
How you handle which child gets destroyed is up to you, if all just loop through the array, destroy each object and clear out the array at the end.