Unity通过C#but don#x27添加文本;不显示
我的unity版本是5.5.2f。我尝试使用C#创建文本并将其添加到父游戏对象a中,但没有显示。我已经添加了一个纹理到父游戏对象a,我可以看到纹理 当我运行程序时,我发现文本的首选宽度和首选高度为零,所以我想这可能会导致问题 这是我的代码,Obj是父游戏对象AUnity通过C#but don#x27添加文本;不显示,c#,unity3d,text,C#,Unity3d,Text,我的unity版本是5.5.2f。我尝试使用C#创建文本并将其添加到父游戏对象a中,但没有显示。我已经添加了一个纹理到父游戏对象a,我可以看到纹理 当我运行程序时,我发现文本的首选宽度和首选高度为零,所以我想这可能会导致问题 这是我的代码,Obj是父游戏对象A public void setText(string value) { if (text == null) { GameObject targetObj = new GameObject();
public void setText(string value)
{
if (text == null)
{
GameObject targetObj = new GameObject();
Canvas canvas = Obj.AddComponent<Canvas>();
canvas.transform.SetParent(Obj.transform ,false);
targetObj.name = "displayTextObject";
targetObj.transform.SetParent(canvas.transform, false);
text = targetObj.AddComponent<Text>();
text.name = "displayText";
Color color = new Color(0, 0, 0);
text.color = color;
Font font = new Font("Arial");
text.font = font;
gridBgObject.SetActive(false);
}
text.text = value;
}
public void setText(字符串值)
{
if(text==null)
{
GameObject targetObj=新GameObject();
Canvas Canvas=Obj.AddComponent();
canvas.transform.SetParent(Obj.transform,false);
targetObj.name=“displayTextObject”;
targetObj.transform.SetParent(canvas.transform,false);
text=targetObj.AddComponent();
text.name=“displayText”;
颜色=新颜色(0,0,0);
text.color=颜色;
Font=新字体(“Arial”);
text.font=font;
gridBgObject.SetActive(false);
}
text.text=值;
}
尝试使用instanciate
制作一个包含
帆布
- 正文
- 文本显示
- 正文
- 文本显示 (如果选择此选项,则必须将父对象设置为画布)
[RequireComponent (typeof (Text))]
public class TextDisplay : MonoBehaviour{
public Text targetText;
void Awake(){
targetText = GetComponent<Text> ();
}
public void SetText(string messageToDisplay){
targetText.text = messageToDisplay;
}
}
文本必须在画布下。如果文本有父对象,则该父对象必须位于画布下。@程序员我已经编辑了答案,但文本仍然没有显示。你的意思是画布必须是根对象,并且它应该没有父对象吗?看起来场景中甚至没有画布。您应该通过转到GameObject-->UI-->画布从编辑器中创建一个。之后,使用公共画布保存该画布,然后可以将其用作文本的父级。如果您决定从脚本创建画布,请使用answer中的
createCanvas
函数。它返回父画布,以便您可以使用返回的游戏对象作为文本的父画布。如果未显示,则将文本位置重置到屏幕中间。您可以使用RectTransform.anchoredPosition3D
完成此操作。请注意,将rectcransform
设置为画布
的子项后,它会自动附加到文本
。有关如何更改UI/文本位置的信息,请参阅。@Programmer ok,我将尝试。非常感谢。
public GameObject textDisplayPrefab;
public Transform rootTransform;
public TextDisplay CreateNewTextDisplay(){
GameObject newTextDisplayObject = Instanciate(textDisplayPrefab) as GameObject;
newTextDisplayObject.transform.SetParent(rootTransform, false);
TextDisplay newTextDisplay = newTextDisplayObject.GetComponent<TextDisplay>();
return newTextDisplay;
}
if(textDisplay == null){
textDisplay = CreateNewTextDisplay();
textDisplay.SetText("your string here!!");
}