- Home /
Unwanted 2nd empty gameobject
i am adding a line render to my gameobject as a child which works fine... however there is also an empty gameobject created as well which is not a child and has the name "linerender". The correctly added linerender children have the name linerender(clone).
This isnt a huge problem but i dont want the scene getting filled with empty gameobjects. is there a way to stop this from happening? I cant see where my code has gone wrong.
any help is much appreciated,
kenneth
here is my code
void Drawbonds()
{
drawbonds = !drawbonds;
if(drawbonds)
{
for(int x=0; x<10; x++)
{
if(bonded[x] != null)
{
GameObject lineobj = Instantiate(new GameObject("linerender"), transform.position, Quaternion.identity) as GameObject;
lineobj.transform.parent = transform;
LineRenderer line = lineobj.AddComponent<LineRenderer>();
line.SetWidth(0.01f,0.01f);
line.renderer.enabled = true;
line.material = bondmaterial;
line.SetPosition(0, transform.position);
line.SetPosition(1, bonded[x].position);
}
}
}
else
{
foreach(Transform children in transform)
Destroy(children.gameObject);
}
}
fixed :
void Drawbonds()
{
drawbonds = !drawbonds;
if(drawbonds)
{
for(int x=0; x<10; x++)
{
if(bonded[x] != null)
{
GameObject lineobj = new GameObject("linerender");
lineobj.transform.position = transform.position;
lineobj.transform.parent = transform;
LineRenderer line = lineobj.AddComponent<LineRenderer>();
line.SetWidth(0.01f,0.01f);
line.renderer.enabled = true;
line.material = bondmaterial;
line.SetPosition(0, transform.position);
line.SetPosition(1, bonded[x].position);
}
}
}
else
{
foreach(Transform children in transform)
Destroy(children.gameObject);
}
}
Answer by lvictorino · Sep 03, 2012 at 11:56 AM
It's instantatiate twice because you don't use Instantiate properly.
I suppose linerenderer is a prefab of your own. When you call
new GameObject("linerenderer");
a new instance of linerenderer will be created. So if you use it in an Instantiate call... you will have a first instance from new GameObject and a second one from Instantiate.
I suggest you to add a Transform field to your class in order to set a prefab and then call Instantiate correctly. As explained in the documentation.
thanks, im an idiot i didn't read or understand instantiate properly. Turns out i didnt need it at all just needed the new GameObject("linerender")
Your answer
Follow this Question
Related Questions
How can I add the OnTriggerEnter function to all game objects that I instantiate? 1 Answer
Instantiating GO infront of player 2 Answers
Souls pickup mechanic (Like Dark Souls, BloodBourne) 0 Answers
Instantiate Terrain Object as child of Empty Game Object 1 Answer
Instantiate prefab to the parent 2 Answers