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);
				
		}
	}

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.