- Home /
Question by
Redmori · Feb 05, 2015 at 02:15 PM ·
c#instantiatetextcanvas
Instantiate prefab text into Canvas
So I'm new to Unity and I'm trying to instantiate text when another prefab is created. Think of it as putting a nameplate/healthnumber above a new enemy. However for the text to be diplayed it needs to be a child of a Canvas. How do I get my Canvas so I can implement:
public Text DistanceText;
Text tempTextBox = Instantiate(DistanceText, pos, rot) as Text;
tempTextBox.transform.SetParent(Canvas.transform, false);
I think there should be an easy solution to this but after trying/searching for hours I have no clue how.
Comment
Answer by David_Munoz · Nov 15, 2015 at 10:17 AM
Your code is ok, you only need to add the Canvas as a parent:
tempTextBox.transform.SetParent(renderCanvas.transform, false);
Answer by Kriogenic · Feb 05, 2015 at 05:03 PM
Create an empty game object and attach a TextMesh, these do not require a canvas.
then you should be able to do the following.
//Insert the empty game object with the TextMesh attached
public GameObject distanceText;
//Instantiates the Object
GameObject tempTextBox = (GameObject)Instantiate(distanceText, pos, rot);
//Grabs the TextMesh component from the game object
TextMesh theText = tempTextBox.transform.getComponent<TextMesh>();
//Sets the text.
theText.text = "The Text";