- Home /
New Game Object not being created
Hello,
I'm currently working on a 2D scene where there are periodic callouts as the child of another GameObject (think chat bubbles). The first time I call the method producing the callout for a GameObject in my scene, it works great. Whenever it's called a second time on the same object in the scene, nothing happens. I've tried stepping through the code, but didn't identify anything useful. There are no errors being thrown either. The code below produces the callout:
private void Callout(Sprite co)
{
GameObject calloutObj = new GameObject();
calloutObj.transform.parent = transform;
calloutObj.transform.localPosition = new Vector3(1.22f, .81f, 0);
calloutObj.transform.localRotation = Quaternion.identity;
calloutObj.AddComponent<SpriteRenderer>();
calloutObj.GetComponent<SpriteRenderer>().sprite = co;
if (panelLocation.y > transform.position.y)
{
calloutObj.GetComponent<SpriteRenderer>().flipX = true;
}
calloutObj.GetComponent<SpriteRenderer>().sortingOrder = 4;
callout = true;
}
When it's time for the child object to disappear, I destroy the child object:
Destroy(transform.GetChild(3).gameObject);
I'm having a hard time thinking about where this is going wrong, and would love any insight into possibilities or things I should check.
Thanks for any and all help!
Answer by dillonm_unc · May 11, 2017 at 02:17 PM
In case anyone stumbles on this, I changed two things before it started working properly. I changed the sprite I was passing to the method into a prefab, and added the destroy call in the same function on a timer. It appears that what actually made the difference is moving the destroy call, not using a prefab - although that's likely a better solution anyway.
private void Callout(GameObject co)
{
GameObject calloutObj = Instantiate(co, transform);
Destroy(calloutObj, 1f);
}
Your answer
