Unity通过C#添加Text但不显示

时间:2017-06-05 06:08:37

标签: c# unity3d text

我的统一版本是5.5.2f。我尝试使用C#创建一个文本并将其添加到父GameObject A,但它没有显示。我已经为父GameObject A添加了一个纹理,我可以看到纹理。

当我运行程序时,我发现文本的首选宽度和首选高度为零,所以我猜它可能会导致问题。

这是我的代码,Obj是父GameObject A.

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;
}

1 个答案:

答案 0 :(得分:0)

尝试使用https://api.instagram.com/v1/users/self/follows?access_token=ACCESS-TOKEN

预制包含

帆布

  • 文本
  • textDisplay形式

RectTransform

  • 文本

  • textDisplay形式 (如果选择此选项,则必须将父级设置为画布)

在 TextDisplay.cs

instanciate
在控制器脚本中

[RequireComponent (typeof (Text))]
public class TextDisplay : MonoBehaviour{
    public Text targetText;

    void Awake(){
        targetText = GetComponent<Text> ();
    }

    public void SetText(string messageToDisplay){
        targetText.text = messageToDisplay;
    }

}

你可以做这样的事情。

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;

}