Chud37
Chud37

Reputation: 5017

Destroy Object and Instansiate it in the middle of Canvas

I have a character that I can drag and drop around the canvas.

If you drag it onto a square, it dissappears.

All of that works well, however I want to Instansiate a clone of that character in the middle of the canvas again once it has been destroyed.

My code to do that so far is;

var clone = Instantiate(gameObject, startPosition, Quaternion.identity);
iTween.ScaleTo(gameObject, new Vector3(0, 0, 0), 2f);
Destroy(gameObject, 3f);

However the object is being cloned I think but I can't see it, and I also have no idea where it is.

Any advice?

Upvotes: 0

Views: 101

Answers (1)

derHugo
derHugo

Reputation: 90714

UI objects have to be somewhere nested under a Canvas .. if you use Instantiate without passing any parent the GameObject is instantiated on root level without any parent => Your UI stays invisible.

Either pass it already to Instantiate

var clone = Instantiate(gameObject, startPosition, Quaternion.identity, parentWithinCanvas.transform);

directly set transform.parent

clone.transform.parent = parentWithinCanvas.transform;

or use transform.SetParent

clone.transform.SetParent(parentWithinCanvas.transform, false);

where the last parameter decides whether the object should keeps its current position in the world or not.

Upvotes: 2

Related Questions