2017-06-05 9 views
0

私のユニティバージョンは5.5.2fです。私は、テキストを作成し、それを親GameObject Aに追加するためにC#を使用しようとしますが、表示されません。親GameObject Aにテクスチャを追加して、テクスチャを見ることができます。UnityはC#でテキストを追加しますが表示されません

私はプログラムを実行すると、私はそれが問題を引き起こすかもしれないと推測するために、優先幅と優先高さがテキストのための0であるとわかりました。ここで

は私のコードで、objが親ゲームオブジェクト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

テキストはキャンバスの下にある必要があります。テキストに親Objectがある場合、その親ObjectはCanvasの下になければなりません。 – Programmer

+0

@Programmer回答を編集しましたが、テキストは表示されません。キャンバスはルートオブジェクトでなければならず、親を持たないはずですか? – Pan

+0

あなたはキャンバスをシーンにも持っていないようです。エディターからGameObject - > UI - > Canvasに移動してください。その後、パブリックCanvasを使用してそのCanvasを保持し、それをテキストの親として使用することができます。スクリプトからCanvasを作成する場合は、[this](https://stackoverflow.com/a/43844000/3785314)の回答から 'createCanvas'関数を使用してください。親キャンバスを返すので、返されたGameObjectを 'Text'の親として使うことができます。 – Programmer

答えて

0

プレハブが

キャンバス

  • テキスト
  • TextDisplayが含ま作るinstanciate

    てみてください

または

RectTransform

  • テキスト

  • TextDisplay (あなたはこれを選択した場合は、キャンバスに親を設定する必要があります) TextDisplayで

。 cs

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

} 

とすることができます。

if(textDisplay == null){ 
    textDisplay = CreateNewTextDisplay(); 
    textDisplay.SetText("your string here!!"); 

} 
関連する問題