- Home /
properly rename instantiated objects
i am trying to rename the defenders as they spawn so i can test for their name on their death and change their boolean so they can respawn.
however i do not understand the results i am getting
here is the code
public void Summon()
{
string a = "Button";
string b = "Button(1)";
string c = "Button(2)";
string d = "Button(3)";
string e = "Button(4)";
string f = "Button(5)";
string g = "Button(6)";
string h = "Button(7)";
string[] split = thisButton.Split(' ');
// print(a.Equals(split[0]).ToString());
Debug.Log(thisButton);
if (a.Equals(split[0]).ToString() == "True" && defender0 == false)
{
Instantiate (defender , buttonPos.position , Quaternion.Euler(0, 270, 0));
defender.name = "defender0";
defender0 = true ;
restartButtonAnim ();
}
else if (b.Equals(split[0]).ToString() == "True")
{
Instantiate (defender , buttonPos.position , Quaternion.Euler(0, 315, 0));
defender.name = "defender1";
restartButtonAnim ();
Debug.Log(defender.name);
}
else if (c.Equals(split[0]).ToString() == "True")
{
Instantiate (defender , buttonPos.position , Quaternion.Euler(0, 2, 0));
defender.name = "defender2";
restartButtonAnim ();
Debug.Log(defender.name);
}
else if (d.Equals(split[0]).ToString() == "True")
{
Instantiate (defender , buttonPos.position , Quaternion.Euler(0, 45, 0));
name = "defender3";
restartButtonAnim ();
Debug.Log(defender.name);
}
else if (e.Equals(split[0]).ToString() == "True")
{
Instantiate (defender , buttonPos.position , Quaternion.Euler(0, 90, 0));
defender.name = "defender4";
restartButtonAnim ();
Debug.Log(defender.name);
}
else if (f.Equals(split[0]).ToString() == "True")
{
Instantiate (defender , buttonPos.position , Quaternion.Euler(0, 135, 0));
defender.name = "defender5";
restartButtonAnim ();
Debug.Log(defender.name);
}
else if (g.Equals(split[0]).ToString() == "True")
{
Instantiate (defender , buttonPos.position , Quaternion.Euler(0, 180, 0));
defender.name = "defender6";
restartButtonAnim ();
Debug.Log(defender.name);
}
else if (h.Equals(split[0]).ToString() == "True")
{
Instantiate (defender , buttonPos.position , Quaternion.Euler(0, 225, 0));
defender.name = "defender7";
restartButtonAnim ();
Debug.Log(defender.name);
}
}
In the Console it is printing out Button 6 and Defender 6 but in the hierarchy the name will be defender3(Clone). The arbitrary number after defender varies and duplicates in a way that seems random to me. any help on naming the clones would be great. Thanks.
Try storing a reference to the object you are Instantiating and changing the name of the reference. eg.
GameObject g = (GameObject)Instantiate (defender , buttonPos.position , Quaternion.Euler(0, 135, 0));
g.name = "defender5";
Answer by Stankiem · Oct 16, 2016 at 07:20 PM
I'm sorry and not trying to be rude but your code is pretty scary IMO, Is "defender" your prefab?
Instead do something like this:
GameObject new_defender; new_defender = Instantiate (defender , buttonPos.position , Quaternion.Euler(0, 225, 0)) as object; new_defender.name = "defender6";
Also, I'm not sure why you're parsing a string for this data, can't you figure out a more efficient way of doing this? shouldn't be necessary here unless I'm misunderstanding what you're doing.
Good luck dude
Answer by MegaManX_777 · Oct 16, 2016 at 07:38 PM
You seem to be renaming the prefab that you are using to instantiate the defender, instead of using
Instantiate (defender ,buttonPos.position , Quaternion.Euler(0, 225, 0));
defender.name = "defender7";
Debug.Log(defender.name);
You should instead use :
GameObject defender7 = Instantiate(defender, buttonPos.position, Quaternion.Euler(0, 225, 0));
defender7.name = "defender7"
Debug.Log(defender7.name);
Like this, you will edit the name of the object that you instantiated, not the prefab. This applies to all defenders.
Your answer
![](https://koobas.hobune.stream/wayback/20220612094745im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Instatiated objects should have all the same name. 2 Answers
Is a clone object still a (clone) if you change the name of it using script? 1 Answer
Instantiated clone GameObject spawning at wrong position. 2 Answers
Changing material name 14 Answers
Instantiate(Cloning) gives no errors but just does not work 2 Answers