Why is Transform.Find() not returning expected results ?
Please take a look at the following code :
public class NewBehaviourScript : MonoBehaviour {
public int frame = 0;
void Update () {
if(frame == 0)
{
var gameObject = new GameObject("1");
gameObject.transform.parent = transform;
Debug.Log(gameObject.GetHashCode());
}
else if(frame == 1)
{
Destroy(transform.GetChild(0).gameObject);
var gameObject = new GameObject("1");
gameObject.transform.parent = transform;
//those two calls should print same thing
Debug.Log(gameObject.GetHashCode());
Debug.Log(transform.Find("1").gameObject.GetHashCode());
}
else if(frame == 2)
{
Debug.Log(transform.Find("1").gameObject.GetHashCode());
}
frame++;
}
}
What it does :
Frame 0 : create a new game object named "1".
Frame 1 : delete that object. Create another object with same name. Use transform.Find() to find object with that name. I expected the new object to be found but it found old object
Frame 2 : Calling transform.Find() finally found expected object
What is going on ? (note : I use Unity 5.3)
Comment